【发布时间】:2011-11-28 13:05:10
【问题描述】:
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
所以基本上我需要一个查询来获取所有活动,同时不获取该活动的反应,而是获取反应的 COUNT,这些反应位于另一个名为 activityReactions 的表中,我该怎么做(请参阅上面我想到的查询)。
所以查询应该返回:
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!
所以现在它应该在我执行查询并执行 WHERE A.id = 3 时在反应计数上返回“2”
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
确实有效,但反应计数返回 * 2,例如,如果有 3 个反应,反应计数 = 6,2 个反应反应计数 = 4 等等。
【问题讨论】:
-
你的例子没有任何意义......你怎么想出
2作为结果?此外,您的数组与您向我们展示的行不匹配 -
大声笑你是对的,现在已经修复了