SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 18.05.2012 12:43:29

wine-time
Завсегдатай
Зарегистрирован: 17.06.2011
Сообщений: 42

два count не срабатывают вместе

Написал запрос:

SELECT
topics.id,
topics.kind,
topics.author_id,
topics.status,
topics.name,
count(likes.id) as likes,
count(comments.id) as comments
FROM topics
LEFT JOIN likes ON topics.id = likes.note_id
LEFT JOIN comments ON topics.id = comments.topic_id
WHERE topics.author_id = 3
GROUP BY topics.id


Собственно, выдача ошибочная при таком запросе: в поле likes дублируется значение из comments
Если вычленять джоины по-одному, то срабатывают оба запроса хорошо. Вместе - нет.
Подскажите, пожалуйста, в чем может быть дело?

Неактивен

 

#2 20.05.2012 21:51:46

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: два count не срабатывают вместе

Дело в логике запроса. Пусть у Вас есть одна тема, 5 комментариев и 3 лайка.
Когда Вы объединяете тему с комментариями отдельно — Вы получаете 5 строк.
Когда Вы объединяете все три таблицы — Вы получаете 15 строк. Что Вам и
сообщает COUNT().

Можно, например, считать COUNT(DISTINCT id). Ну или сделать два запроса.
Или даже переписать через подзапросы.

Неактивен

 

Board footer

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