WordPress Query Help - PullRequest
       3

WordPress Query Help

0 голосов
/ 01 февраля 2011

Попытка построить несколько сложный запрос WordPress. В одном запросе я пытаюсь:

  1. Потяните всех авторов WordPress
  2. Только авторы с 10 или более опубликованными постами (с чем у меня проблемы)
  3. Сортировка авторов по последнему сообщению.

Вот мой оригинальный запрос:

SELECT wp_users.ID, display_name, user_url, user_email, MAX(post_date) as date FROM wp_users, wp_posts WHERE wp_users.ID = wp_posts.post_author AND wp_posts.post_status = 'publish' AND wp_posts.post_type = 'post' GROUP BY display_name ORDER BY date DESC;

Этот запрос возвращает всех авторов, даже с 9 или менее опубликованными публикациями.

Вот запрос с количеством сообщений:

SELECT wp_users.ID, display_name, user_url, user_email, MAX(post_date) as date, COUNT(post_date) as post_count FROM wp_users, wp_posts WHERE wp_users.ID = wp_posts.post_author AND wp_posts.post_status = 'publish' AND wp_posts.post_type = 'post' GROUP BY display_name ORDER BY date DESC;

В этом запросе вы можете видеть, что я добавил:

COUNT(post_date) as post_count

Который все прекрасно возвращает.

Только когда я добавляю это предложение WHERE, запрос прерывается

post_count > 9

Я получаю это сообщение об ошибке:

Неизвестный столбец 'post_count' в 'предложении where'

Есть идеи, почему это происходит? Мои теории:

  1. Не будет работать с группировкой
  2. или MySQL не допускает более одного оператора AS

Если бы вы могли пролить немного света, я был бы очень признателен.

Спасибо.

Ответы [ 2 ]

1 голос
/ 01 февраля 2011

Вы ищете оператора "HAVING".

SELECT wp_users.ID, display_name, user_url, user_email, MAX(post_date) as date, COUNT(post_date) as post_count FROM wp_users, wp_posts WHERE wp_users.ID = wp_posts.post_author AND wp_posts.post_status = 'publish' AND wp_posts.post_type = 'post' GROUP BY display_name HAVING post_count>9 ORDER BY date DESC;
1 голос
/ 01 февраля 2011

изменить условие в ГДЕ части запроса post_count > 9

с HAVING post_count > 9 после GROUP BY

окончательный запрос будет SELECT wp_users.ID, display_name, user_url, user_email, MAX(post_date) as date, COUNT(post_date) as post_count FROM wp_users, wp_posts WHERE wp_users.ID = wp_posts.post_author AND wp_posts.post_status = 'publish' AND wp_posts.post_type = 'post' GROUP BY display_name HAVING post_count > 9 ORDER BY date DESC;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...