Я пытаюсь отобразить записи из таблицы, сгруппированные по определенным мета значениям из другой таблицы, и упорядоченные по другим мета значениям или идентификатору записи, если выбран «недавний» порядок.
Лучшее, что я придумал, это:
SELECT `posts`.`id_post`,
m1.value AS REGIUNE,
m2.value AS JUDET,
m3.value AS LOCALITATE,
MAX(`posts`.`id_post`) AS ORDERBY
FROM `posts`
INNER JOIN `posts_meta` m1
ON(`posts`.`id_post`=m1.`id_post`)
INNER JOIN `posts_meta` m2
ON(`posts`.`id_post`=m2.`id_post`)
INNER JOIN `posts_meta` m3
ON(`posts`.`id_post`=m3.`id_post`)
WHERE
`posts`.`type` = 'published'
AND ( m1.`meta` = 'regiune' )
AND ( m2.`meta` = 'judet' )
AND ( m3.`meta` = 'localitate' )
GROUP BY posts.id_post
ORDER BY ORDERBY DESC
Однако это работает только в том случае, если мы не группируемся по каким-либо мета-значениям (m1.value, m2.value или m3.value).