SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 02.06.2014 00:20:55

serj011
Активист
Зарегистрирован: 22.04.2010
Сообщений: 234

GROUP BY для COUNT(*)

есть вот такой запрос

$result_note = mysql_query("SELECT COUNT(*) FROM `like_note` WHERE `l_user_id` IN ( SELECT `user_added` FROM `friends` WHERE `user` = '{$myrow_user['id']}' )",$db);
$temp_note = mysql_fetch_array($result_note);
$posts_note = $temp_note[0];


Нужно в него добавить GROUP BY, когда добавляю перестает правильно считать!? Почему?
$result_note = mysql_query("SELECT COUNT(*) FROM `like_note` WHERE `l_user_id` IN ( SELECT `user_added` FROM `friends` WHERE `user` = '{$myrow_user['id']}' ) GROUP BY `l_note_id`",$db);

Отредактированно serj011 (02.06.2014 00:21:17)

Неактивен

 

#2 02.06.2014 00:24:36

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: GROUP BY для COUNT(*)

Какой ответ получается? Какой должен быть?

Неактивен

 

#3 02.06.2014 00:31:32

serj011
Активист
Зарегистрирован: 22.04.2010
Сообщений: 234

Re: GROUP BY для COUNT(*)

Ну в моем случае без GROUP BY должно быть 120, так и получается, а без GROUP BY около 100, а выводит 1

Неактивен

 

#4 02.06.2014 00:33:28

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: GROUP BY для COUNT(*)

с GROUP BY он должен выдать не одну строку, а по одной для каждого значения l_note_id

Неактивен

 

#5 02.06.2014 00:41:31

serj011
Активист
Зарегистрирован: 22.04.2010
Сообщений: 234

Re: GROUP BY для COUNT(*)

rgbeast написал:

с GROUP BY он должен выдать не одну строку, а по одной для каждого значения l_note_id

Ну я этого и добиваюсь, но...???
А вообще в запросе COUNT(*) можно использовать GROUP BY?

Неактивен

 

#6 02.06.2014 00:50:08

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: GROUP BY для COUNT(*)

Да, конечно, count(*) будет считать внутри группы. А как вы отличите к какому l_note_id относится то или иное число. Логичнее запрос написать так:

SELECT `l_note_id`, COUNT(*) ...

Неактивен

 

#7 02.06.2014 01:00:19

serj011
Активист
Зарегистрирован: 22.04.2010
Сообщений: 234

Re: GROUP BY для COUNT(*)

rgbeast написал:

Да, конечно, count(*) будет считать внутри группы. А как вы отличите к какому l_note_id относится то или иное число. Логичнее запрос написать так:

SELECT `l_note_id`, COUNT(*) ...

Я не совсем понял, но зачем мне отличать к какому l_note_id относится то или иное число?
Мне нужно просто посчитать где

WHERE `l_user_id` IN ( SELECT `user_added` FROM `friends` WHERE `user` = '{$myrow_user['id']}' )

и сгруппировать при подсчете по l_note_id

Неактивен

 

#8 02.06.2014 01:08:56

serj011
Активист
Зарегистрирован: 22.04.2010
Сообщений: 234

Re: GROUP BY для COUNT(*)

rgbeast, а как переписать мой запрос в таком формате SELECT `l_note_id`, COUNT(*) ...?
что то я не могу сообразить

Неактивен

 

#9 02.06.2014 01:14:56

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: GROUP BY для COUNT(*)

$result_note = mysql_query("SELECT `l_note_id`,COUNT(*) c FROM `like_note` WHERE `l_user_id` IN ( SELECT `user_added` FROM `friends` WHERE `user` = '{$myrow_user['id']}' ) GROUP BY `l_note_id`",$db);

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson