Note: This question is related to a WordPress specific question but I wanted to have an "outside look" at this from a pure SQL point of view: https://wordpress.stackexchange.com/questions/55263/order-posts-by-custom-field-and-if-custom-field-is-empty-return-remaining-posts
Let's say we have to tables with the following strucure:
Tabe posts
: ID
(key), Title
Table post_metadata
: post_ID
(FKEY), meta_key
, meta_value
And I want to retrieve ID and Title of posts that have:
- an entry in
post_metadata
withkey
= 'meta_1' andmeta_value
= 'value_1' - AND an entry in
post_metadata
withkey
= 'meta_2' andmeta_value
= 'value_2'
I want to order the results by the value of a third metadata with meta_key
= "meta_3".
Now here is the tricky part:
Not all posts have an entry in post_metadata
table with 'meta_3' as meta_key
. Since Im not filtering posts by meta_3, only ordering, I wanted to keep these posts in my results, as if they had an empty value for this meta.
How can we achieve that?
Thanks
Edit:
There is SQL fiddle now: https://www.db-fiddle.com/f/kBNaaRFB5xfna5MniuTpaG/1