3 つのテーブルがあります:
t_user (id, name) t_user_deal (id, user_id, deal_id) t_deal (id, title)
複数のユーザーを同じ取引にリンクできます。(私はオラクルを使用していますが、似ているはずです。適応させることができます)
彼が取引した一意のユーザーの数ですべてのユーザー (名前) を取得するにはどうすればよいですか?
いくつかのデータで説明しましょう:
t_user:
id, name
1, joe
2, mike
3, John
t_deal:
id, title
1, deal number 1
2, deal number 2
t_user_deal:
id, user_id, deal_id
1, 1, 1
2, 2, 1
3, 1, 2
4, 3, 2
私が期待する結果: user_name、Joe と取引を行った一意のユーザーの数、2 Mike、1 John、1
私はこれを試しましたが、期待した結果が得られませんでした:
SELECT tu.name,
count(tu.id) AS nbRelations
FROM t_user tu
INNER JOIN t_user_deal tud ON tu.id = tud.user_id
INNER JOIN t_deal td ON tud.deal_id = td.id
WHERE
(
td.id IN
(
SELECT DISTINCT td.id
FROM t_user_deal tud2
INNER JOIN t_deal td2 ON tud2.deal_id = td2.id
WHERE tud.id <> tud2.user_id
)
)
GROUP BY tu.id
ORDER BY nbRelations DESC
ご協力いただきありがとうございます