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
所以基本上我需要一个查询,将得到所有的活动,并在同一时间无法获得该活动的反应,但得到的反应,这是在所谓的activitiesReactions另一个表中找到的计数,我该如何做到这一点(请参阅上述查询,我想到了)。MySQL的计数加入
所以查询应该返回:
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” reactionCount当我执行查询并做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
这确实奏效,但reactionCount返回为* 2,例如,如果有3个反应,reactionCount = 6,2个反应的reactionCount = 4等。
您的示例没有任何意义......你怎么来了'2'作为结果?另外,你的数组与你显示的行不匹配 – knittl
哈哈你说得对,现在已经修复了 – user1066101