MySQL: count() и group BY

P
На сайте с 10.03.2008
Offline
168
918

Есть запрос:

SELECT * 

FROM `pages`
INNER JOIN `pages_parents` ON `pages_parents`.`parent`
IN ( 110, 129, 130, 131, 132, 133, 134, 330, 268, 277, 127, 346, 323, 324, 326, 381 )
AND `pages_parents`.`page` = `pages`.`id`
WHERE `pages`.`status` = 'publish'
AND `pages`.`group` = '2'
GROUP BY `pages`.id
LIMIT 1000

Без group by выводится 30 записей с дублями, с group by - 22 без дублей.

Заменяю "SELECT *" на "SELECT COUNT( `pages`.id )", вместо одного числа получаю 22 строки с числом дублей для каждого совпадения:

http://clip2net.com/clip/m0/1347695300-clip-5kb.png

Как по-хорошему получить число 22?

IL
На сайте с 20.04.2007
Offline
435
#1

По идее так должно сработать.. проверить негде :)

SELECT COUNT(*) FROM

(SELECT DISTINCT pages.id
FROM `pages`
INNER JOIN `pages_parents` ON `pages_parents`.`parent`
IN ( 110, 129, 130, 131, 132, 133, 134, 330, 268, 277, 127, 346, 323, 324, 326, 381 )
AND `pages_parents`.`page` = `pages`.`id`
WHERE `pages`.`status` = 'publish'
AND `pages`.`group` = '2'
) t
... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
P
На сайте с 10.03.2008
Offline
168
#2

ivan-lev, нет, "Every derived table must have its own alias". И, что-то мне подсказывает, есть решение, меньше напоминающее костыль :)

IL
На сайте с 20.04.2007
Offline
435
#3

t после скобки не забыта?

По поводу костыльности - хз.. )

P
На сайте с 10.03.2008
Offline
168
#4

ivan-lev, точно, с t работает, спасибо!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий