特定のテーブル内の各レコードにいくつの関連付けがあるかを見たいと思います。これらの団体の中には、これまでのところ、私は会話のための声明に参加し、最後に問題に遭遇し複数のテーブルからの関連付けを集計する
-- Count app associations
SELECT
distinct a.name,
COALESCE(v.count, 0) as visitors,
COALESCE(am.count, 0) AS auto_messages,
COALESCE(c.count, 0) AS conversations
FROM apps a
LEFT JOIN (SELECT app_id, count(*) AS count FROM visitors GROUP BY 1) v ON a.id = v.app_id
LEFT JOIN (SELECT app_id, count(*) AS count FROM auto_messages GROUP BY 1) am ON a.id = am.app_id
LEFT JOIN (
SELECT DISTINCT c.id, app_id, count(c) AS count
FROM conversations c LEFT JOIN messages m ON m.conversation_id = c.id
WHERE m.visitor_id IS NOT NULL
GROUP BY c.id) c ON a.id = c.app_id
WHERE a.test = false
ORDER BY visitors DESC;
を持っているそれら
に取り付けたいくつかの条件があります。私はvisitor_idがnullでない少なくとも1つのメッセージを持つ会話の数を数えたいと思います。何らかの理由で、私は各アプリごとに複数のレコードを取得します。会話は適切にグループ化されていません。
アイデア?
c.idでグループ化されているという事実に関連している可能性があります。 – scaisEdge
違いがあるようです。 – Tarlen