我有 3 个表:
t_user (id, name) t_user_deal (id, user_id, deal_id) t_deal (id, title)
多个用户可以链接到同一个交易。(我正在使用oracle,但应该是相似的,我可以适应它)
我怎样才能获得所有用户(名称)以及他与之交易的唯一用户数。
让我们用一些数据来解释:
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
感谢您的帮助