数据库 SQL关联3张表查询问题

描述:


    a、现有文章信息表TB_A,一个文章分享记录表TB_B,一个文章访问记录表TB_C。    
    b、文章信息表有字段:ARTICLE_ID、TITLE、CONTENT
    c、分享记录表有字段:分享人ID(SHARE_ID)、文章ID(ARTICLE_ID)、分享对象USER_ID
    d、访问记录表有字段:访问人ID(VIEW_ID)、文章ID(ARTICLE_ID)

问题:
求出所有文章信息的列表和每篇文章的分享量和访问量的SQL。不能使用TITLE和CONTENT分组,因为这两个字段有可能是空或者是重复,若是仅以ID分组该如何写SQL? 示例结果:


    ARTICLE_ID,TITLE,CONTENT,shareNm,viesNm
    WZ001,        活着    xxxxx,  510,    ,400
    WZ002,        围城    xxxxx,  360,    ,300

由于数据多对一问题,不能在一起group统计,需要各自单独统计,才能得出准确数字



select a.*,shareNum,viewNum 
from tb_a
left join (
    select article_id,count(0) shareNum
    from tb_b 
    group by article_id
) b on a.article_id=b.article_id
left join (
    select article_id,count(0) viewNum
    from tb_c
    group by article_id
) c on a.article_id=c.article_id

参考chatGPT
SQL语句:

SELECT a.ARTICLE_ID, a.TITLE, a.CONTENT, COUNT(b.SHARE_ID) AS shareNm, COUNT(c.VIEW_ID) AS viewNm
FROM TB_A a
LEFT JOIN TB_B b ON a.ARTICLE_ID = b.ARTICLE_ID
LEFT JOIN TB_C c ON a.ARTICLE_ID = c.ARTICLE_ID
GROUP BY a.ARTICLE_ID, a.TITLE, a.CONTENT

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^