繁体   English   中英

具有行数的3个表的内部联接

[英]Inner join of 3 tables with row count

我有3个表A,B和C,如下所示。

一种 乙 C

所有这三个表都有一个公共的CUST_ID列。 表A和B具有2个公共列CUST_IDA_ID 我必须显示表CNAME ,表B中每个CUST_IDTest_ID计数以及表A STARTEND 预期结果表如下所示:

[R

我尝试了inner join

select C.Name ,A.Start,A.[End]
from
C
inner join
B
on C.CUST_ID = B.CUST_ID
inner join
A
on A.A_ID = B.A_ID and A.CUST_ID = B.CUST_ID

但它总共给出了7行。 如何显示东部CUST_IDTest_ID计数并将其仅显示在4行中,如预期结果表所示?

尝试这个

    SELECT C.NAME, Tmp.Test_COUNT, A.START, A.END
    FROM C INNER JOIN A ON C.CUST_ID = A.CUST_ID
    INNER JOIN
    (
        SELECT CUST_ID, A_ID, COUNT(*) AS Test_COUNT
        FROM B
        GROUP BY CUST_ID, A_ID
    ) Tmp ON Tmp.CUST_ID = A.CUST_ID AND Tmp.A_ID = A.A_ID    

您需要使用子查询来获取表B的测试计数,并将该表连接起来,而不是直接连接B

SELECT C.NAME, t.Test_COUNT, A.START, A.END
FROM C
INNER JOIN A
    ON C.CUST_ID = A.CUST_ID
INNER JOIN
(
    SELECT A_ID, COUNT(*) AS Test_COUNT
    FROM B
    GROUP BY A_ID
) t
    ON t.A_ID = A.A_ID

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM