[英]Inner join of 3 tables with row count
我有3个表A,B和C,如下所示。
所有这三个表都有一个公共的CUST_ID
列。 表A和B具有2个公共列CUST_ID
和A_ID
。 我必须显示表C
的NAME
,表B
中每个CUST_ID
的Test_ID
计数以及表A
START
和END
。 预期结果表如下所示:
我尝试了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_ID
的Test_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.