В настоящее время я пытаюсь создать поток действий, в котором перечислены:
- сообщения,
- комментарии,
- оба смешаны между собой и упорядочены по дате.
Моя идея состоит в том, чтобы сделать два запроса, но я не знаю, как их смешать. Вот мои запросы:
// Query the posts :
$queryPosts = "
SELECT * FROM $wpdb->posts
WHERE post_type = 'post'
AND post_status = 'publish'
ORDER BY post_date DESC
";
// Query the comments :
$queryComments = "
SELECT * FROM $wpdb->comments
ORDER BY comment_date DESC
";
Возможно ли это с помощью SQL JOIN?
ОБНОВЛЕНИЕ:
я попробовал то, что было предложено @scribu об использовании SQL UNION, и оно работает хорошо:
SELECT ID AS entry_id, post_date AS entry_date, post_content AS entry_content FROM $wpdb->posts
WHERE post_type = 'post'
AND post_status = 'publish'
UNION
SELECT comment_ID AS entry_id, comment_date AS entry_date, comment_content AS entry_content FROM $wpdb->comments
ORDER BY entry_date DESC
Сейчас я пытаюсь получить доступ к некоторым данным, которые находятся в таблице сообщений, а не в таблице комментариев. Есть идеи ?
Спасибо заранее.
Сколько из каждого вы хотите? Хотите в обратном хронологическом порядке? Какие атрибуты каждого из них вам нужны/нужны? Постоянная ссылка, отрывок? Более?
@MikeSchinkel — «Сколько каждого из них вы хотите?» Я не хочу ограничивать результат. «Вы хотите в обратном хронологическом порядке?» да. «Какие атрибуты каждого из них вам нужны/нужны?» Я только что попробовал то, что было предложено @scribu об использовании SQL UNION, и оно работает хорошо, но, как вы спрашиваете, у меня теперь есть некоторые проблемы с новостями о данных, которые я хотел бы получить. Например, я хотел бы получить доступ к «comment_count», который находится в таблице сообщений, но не имеет эквивалента в таблице комментариев.
Если у вас есть дополнительный вопрос, задайте его здесь, на сайте WPSE.
Спасибо за ваше предложение, я обновил свой пост. Моя следующая проблема: каждый результат отображается в div, я хотел бы иметь возможность добавить класс с типом результата для каждого. Например: каждый комментарий получает class=»comment» и каждый пост получает class=»post». Есть идеи ?
Конечно, просто добавьте
post_type AS entry_type
и'comment' AS entry_type
столбцы, а затем проверьте это при выводе.Вы можете использовать тот же прием для подсчета комментариев:
comment_count
и0 AS comment_count
соответственно.Я полагаю, вы ищете SQL UNION.