关于MySQL中一个左表左联多个表的疑问?

KimiKudo 2019-05-07 04:23:15
我的需求是,
以一个表作为左表,起名为member表,
左连接两个表分别是表a,和表b,
连接条件都是member中的一个字段与表a,表b中的某个字段的对应.

然后将查询结果按member的ID字段group by,然后分别统计表a结果的count和表b结果的count

之前是按照三表关联写的,
SELECT * FROM
(member LEFT JOIN a ON member.ID=a.mid)
LEFT JOIN b ON member.ID=b.mid

但是实际结果并不正确,这样关联实际上也实现了a和b的左联,导致count结果是实际所需结果的乘积.
也就是比如我要的结果是
member a b
1 3 5

实际得到的却是
member a b
1 15 15


我的临时解决办法是在count时使用DISTINCT,但是实际上我的表a和表b可能是多个表UNION ALL的ID,却是可能会出现重复的情况...

所以应该是我的关联方式不太对....

但我又不知道到底应该怎么关联才是正确的...

所以请教一下论坛的前辈们!
...全文
161 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
RINK_1 2019-05-07
  • 打赏
  • 举报
回复
试试下面的

SELECT ISNULL(A.ID,B.ID),A.AMOUNT_A,B.AMOUNT_B
FROM
(SELECT ID,COUNT(*) AS AMOUNT_A
FROM MEMBER C
JOIN A ON C.关联字段=A.关联字段
GROUP BY ID) AS A
FULL JOIN
(SELECT ID,COUNT(*) AS AMOUNT_B
FROM MEMBER C
JOIN B ON C.关联字段=B.关联字段
GROUP BY ID) AS B ON A.ID=B.ID

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧