У меня есть запрос на выбор сообщений (wp_posts table
), где либо одна пара ключ / значение, либо другая присутствует во второй таблице (wp_postmeta
). По сути, это работает, но мне нужно упорядочить результаты по первому значению ключ / пара (department_head
), а затем по второму (staff_surname
).
Проблема заключается в том, что из-за способа, которым результаты захватываются запросом, не существует клавиши department_head
, с помощью которой можно упорядочить результаты. Я предполагаю, что это потому, что запрос сначала находит ключ staff_surname
?
Опять угадываю, но если мое предположение верное, то это потому, что, хотя я и дважды присоединяюсь к таблице, MYSQL просто извлекает первый экземпляр из таблицы wp_postmeta
, когда выполняется условие staff_surname
. Это то, что мне нужно найти, чтобы у меня были правильные данные, чтобы можно было упорядочить результаты.
Полный запрос -
SELECT SQL_CALC_FOUND_ROWS wp_posts.*
FROM wp_posts
INNER JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id)
INNER JOIN wp_postmeta ON (wp_posts.ID = wp_postmeta.post_id)
INNER JOIN wp_postmeta AS mt1 ON (wp_posts.ID = mt1.post_id)
WHERE 1=1
AND (
wp_term_relationships.term_taxonomy_id IN (34)
)
AND wp_posts.post_type = 'people'
AND (
wp_posts.post_status = 'publish'
OR wp_posts.post_status = 'private'
)
AND (
(
wp_postmeta.meta_key = 'department_head'
AND CAST(wp_postmeta.meta_value AS CHAR) = 'private-client'
)
OR (
mt1.meta_key = 'staff_surname'
AND CAST(mt1.meta_value AS CHAR) != ''
)
)
GROUP BY wp_posts.ID
ORDER BY mt1.meta_value ASC
LIMIT 0, 10
Пример результатов запроса -
ID name meta_id post_id meta_key meta_value meta_id post_id meta_key meta_value
1 Test1 10 1 random_key random_value 11 1 staff_surname Smith
2 Test1 20 2 random_key random_value 21 2 staff_surname Jones
3 Test1 30 3 random_key random_value 31 3 staff_surname Harris
Пример того, что мне нужно, если Джонс был начальником отдела -
ID name meta_id post_id meta_key meta_value meta_id post_id meta_key meta_value
1 Test1 10 1 11 1 staff_surname Smith
2 Test1 22 2 department_head private-client 21 2 staff_surname Jones
3 Test1 30 3 31 3 staff_surname Harris
Ключ "Department_head" не существует в подавляющем большинстве случаев, поэтому ключ / значение являются пустыми в других случаях.
Есть ли способ добиться нужных мне результатов заказа?
Примечание: Причина, по которой я разместил это здесь в отличие от сайта Wordpress, заключается в том, что это пользовательский запрос, а не сгенерированный WP, поэтому он, вероятно, будет выходить за рамки большинства экспертов WP. .