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 count join
ので、クエリが返す必要があります:
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を行うときに、今ではreactionCountに、 "2" を返す必要があります= 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
それはうまくいきましたが、反応数は* 2として返されます。たとえば、3つの反応がある場合、反応数= 6,2反応数はreactionCount = 4などです。
あなたの例では、任意の意味をなさない...どのようにあなたが思い付くん結果として「2」?また、あなたの配列は私たちに表示されている行と一致しません – knittl
あなたは正しいです、それは今修正されました – user1066101