Ad(Id、AgentId、AdDesc、AdTitle、EmailId、Adate)、AdComment(ComId、Eメール、コメント、AdId)とMyLikes(LikeId、email、AdId )。ここで私は3つのテーブルを結合し、すべての広告ID(Ad.Id = AdComment.AdId)とMyLikesからの好きな数に基づいてAdテーブルのすべてのフィールドをAdCommentテーブルからのコメントの数とともに表示する必要があります(Ad.Id = MyLikes.AdId)。グループを使用して3つのテーブルを結合してカウントする
私はちょうど私が使用広告と広告のコメントに参加しました -
SELECT * , (
SELECT COUNT(c.AdId)
) AS ComCount
FROM Ad a
LEFT JOIN AdComment c ON a.Id = c.AdId
GROUP BY a.Id
ORDER BY a.Id DESC
をこれが正常に動作しています。私は広告やMyLikesに参加したとき
はまた、私は使用 - これは正常に動作している
SELECT a.Id, (
SELECT COUNT(*)
FROM MyLikes m
WHERE (
m.email = '[email protected]'
AND m.AdId = a.Id
)
) AS MyCount
FROM Ad a
LEFT JOIN MyLikes m ON a.Id = m.AdId
GROUP BY a.Id
。
しかし、3つのテーブル結合をすべて試しても機能しない場合、コメントカウントに間違った値が与えられます。このため は私がどのように私はこれらの3つのテーブルを結合し、望ましい結果を得ることができます
SELECT a.Id,a.AgentId,a.EmailId,a.AdTitle,a.AdDesc, (
SELECT COUNT(m.AdId)
FROM MyLikes m
WHERE (
m.email = '[email protected]'
AND m.AdId = a.Id
)
) AS MyCount,(
SELECT COUNT(c.AdId)
) AS ComCount
FROM Ad a
LEFT JOIN MyLikes m ON a.Id = m.AdId LEFT JOIN AdComment c ON a.Id = c.AdId
GROUP BY a.Id ORDER BY a.Id DESC
をused-。
質問を編集し、サンプルデータと希望する結果を提供してください。 –