mysql count join - PullRequest
       7

mysql count join

0 голосов
/ 28 ноября 2011
SELECT A.id as ActivityId, A.description, T.id, T.title, COUNT(R.*) as reactionCount
FROM activities 
LEFT JOIN activitiesReactions as R ON R.activityId = A.id
LEFT JOIN activitiesTags as T ON A.tagId = T.id

Так что в основном мне нужен запрос, который получит все действия, и в то же время НЕ получит реакции на это действие, но получит СЧЕТ реакций, которые находятся в другой таблице, называемой actionsReactions, как мне это сделать ( см. выше запрос, который я имел в виду).

Таким образом, запрос должен вернуть:

array('activityId' => 3, 'description' => 'doing work', 'reactionCount' => 2)

Пример строки:

Activities table:
id | description
 3   doing work
 4   checking mail

ActivitiesReactions table:
id | activityId | message
 1            3   you never do anywork, so that must be bullshit.
 2            3   yes I do alot of work!

поэтому теперь он должен возвращать «2» на responseCount, когда я выполняю запрос и выполняю WHERE A.id = 3


SELECT A.id as ActivityId, A.description, COUNT(R.activityId) AS reactionCount
FROM activities 
LEFT JOIN activitiesReactions as R
ON R.activityId = A.id
GROUP BY A.id

Это сработало, но responseCount возвращается как * 2, например, если есть 3 реакции, responseCount = 6, 2 реакции, responseCount = 4 и т. Д.

Ответы [ 2 ]

5 голосов
/ 28 ноября 2011

Ваш запрос нуждается только в предложении group by, чтобы он работал, например.

SELECT A.id as ActivityId, A.description, COUNT(R.*) 
FROM activities 
    LEFT JOIN activitiesReactions as R ON R.activityId = A.id
GROUP BY A.id, A.description;
2 голосов
/ 28 ноября 2011

Если вы хотите посчитать количество реакций на действие, вы должны сгруппировать по activity.id после объединения обеих таблиц:

SELECT A.id as ActivityId, A.description, COUNT(*) AS reactionCount
FROM activities 
LEFT JOIN activitiesReactions as R
ON R.activityId = A.id
GROUP BY A.id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...