2011-02-01 2 views
0

Попытка создать несколько сложный запрос WordPress. В одном запросе, я пытаюсь:Справка по запросу 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 

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

Это только тогда, когда я добавляю это ИНЕКЕ, делает перерыв запроса

post_count > 9 

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

Неизвестный столбца 'POST_COUNT' в 'где предложение'

Любая идея, почему это происходит? Мои теории:

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

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

Спасибо.

ответ

1

изменить условие в WHERE части запроса 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;

+0

Где я могу поместить предложение HAVING в отношении остальной части запроса? – user598952

+0

Я изменил сообщение, чтобы показать полный запрос – Ass3mbler

+0

После GROUP BY –

1

Вы ищете «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; 
+0

Спасибо! Это сделал трюк. – user598952

Смежные вопросы