PHP Query сообщения и добавить незапрошенные сообщения до конца - PullRequest
0 голосов
/ 03 сентября 2011

Хорошо, поэтому через Wordpress я в итоге получил строку запроса следующего содержания:

"SELECT * FROM wp_z4azbl_posts 
LEFT JOIN wp_z4azbl_postmeta ON(
    wp_z4azbl_posts.ID = wp_z4azbl_postmeta.post_id) 
LEFT JOIN wp_z4azbl_term_relationships ON(
    wp_z4azbl_posts.ID = wp_z4azbl_term_relationships.object_id) 
LEFT JOIN wp_z4azbl_term_taxonomy ON(
    wp_z4azbl_term_relationships.term_taxonomy_id = wp_z4azbl_term_taxonomy.term_taxonomy_id) 
LEFT JOIN wp_z4azbl_terms ON(
    wp_z4azbl_terms.term_id = wp_z4azbl_term_taxonomy.term_id) 
WHERE wp_z4azbl_term_taxonomy.taxonomy = 'opportunitytype' 
AND wp_z4azbl_posts.post_status = 'publish' 
AND wp_z4azbl_posts.post_type = 'opportunities' 
AND wp_z4azbl_postmeta.meta_key = 'date_timestamp' 
GROUP BY wp_z4azbl_posts.ID 
ORDER BY wp_z4azbl_postmeta.meta_value ASC"

В конечном итоге это работает. Он захватывает мои сообщения с настраиваемым полем и сортирует их в порядке возрастания. Однако мне нужно также добавлять сообщения, которые не имеют отметки времени после всех сообщений, которые имеют отметку времени.

Итак, сейчас он показывает что-то вроде этого:

Event Title
January 1, 2011

Event Title 2
January 2, 2011

Но я хочу добавить все сообщения без отметки времени:

Event Title
January 1, 2011

Event Title 2
January 2, 2011

Event Title Nostamp

Event Title Nostamp 2

Как бы я изменил свой запрос, чтобы заставить его работать?

EDIT

Извините, я запутался в своем исходном запросе. На самом деле мне нужно, чтобы они сортировались в порядке возрастания, а сообщения без отметки времени все еще находятся внизу.

1 Ответ

1 голос
/ 03 сентября 2011

Чтобы включить строки без метки времени в набор результатов, переместите meta_key = 'date_timestamp' из условия where в on:

LEFT JOIN 
        wp_z4azbl_postmeta 
ON      wp_z4azbl_posts.ID = wp_z4azbl_postmeta.post_id
        and wp_z4azbl_postmeta.meta_key = 'date_timestamp'

Поскольку вы сортируете descending, значения nullуже появится внизу.null рассматривается как минимально возможное значение для целей сортировки.

РЕДАКТИРОВАТЬ: Чтобы отсортировать null по-другому, используйте case:

order by
        case
        when wp_z4azbl_postmeta.meta_value is null then 2
        else 1
        end
,       wp_z4azbl_postmeta.meta_value
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...