Вы смешиваете все понятия вместе. WHERE
, GROUP BY
и HAVING
делают разные вещи. Возможно, вам нужно прочитать эту страницу более тщательно:
http://dev.mysql.com/doc/refman/5.1/en/select.html
Но если я сделаю некоторые предположения о том, что вы делаете ...
Вы, вероятно, хотите начать с этой части:
SELECT * FROM articles WHERE parent_id > 0
Но теперь вы хотите сгруппировать статьи, имеющие одного и того же родителя. Предполагая, что каждая статья имеет id
, возможно, вы хотите
SELECT parent_id, COUNT(*) AS article_count FROM articles WHERE parent_id >= 0 GROUP BY parent_id
Теперь все эти строки будут значения parent_id хотя бы с одной дочерней статьей, но если вы хотите посмотреть только на родителей с более чем двумя дочерними статьями, вы можете захотеть:
SELECT parent_id, COUNT(*) AS article_count
FROM articles
WHERE parent_id >= 0
GROUP BY parent_id
HAVING article_count >= 2
Это покажет вам идентичность всех родительских статей как минимум с 2 дочерними статьями.