我想在sql中联接三个表,但无法获得所需的结果
这意味着它可以将条目相乘您可以在下面尝试使用distinct count我想在sql中联接三个表,但无法获得所需的结果,sql,Sql,这意味着它可以将条目相乘您可以在下面尝试使用distinct count SELECT COUNT(TAB1.ID), COUNT(TAB2.ID) Results, COUNT(TAB3.ID) Dropout FROM TAB1 INNER JOIN TAB2 on TAB1.ID = TAB2.ID INNER JOIN TAB3 on TAB1.ID = TAB3.ID WHERE TAB1.ID='405' T
SELECT COUNT(TAB1.ID),
COUNT(TAB2.ID) Results,
COUNT(TAB3.ID) Dropout
FROM TAB1 INNER JOIN
TAB2 on TAB1.ID = TAB2.ID INNER JOIN
TAB3 on TAB1.ID = TAB3.ID
WHERE TAB1.ID='405'
The answer i expect is 2,3,4 but it returns 24,24,24.
我将切换到相关子查询:
SELECT COUNT(distinct TAB1.ID),COUNT(distinct TAB2.ID) Results,COUNT(distinct
TAB3.ID) Dropout FROM TAB1
INNER JOIN TAB2 on TAB1.ID=TAB2.ID
INNER JOIN TAB3 on TAB1.ID=TAB3.ID
WHERE TAB1.ID='405'
甚至会返回结果为零或退出的行。我猜COUNTDISTINCT会满足您的要求。没有样本数据,很难提出更具体的建议:
SELECT TAB1.ID, COUNT(TAB1.ID),
(select COUNT(TAB2.ID) from TAB2 where TAB1.ID=TAB2.ID) Results,
(select COUNT(TAB3.ID) from TAB3 where TAB1.ID=TAB3.ID) Dropout
FROM TAB1
WHERE TAB1.ID = '405' -- to be removed when GROUP BY is added
GROUP BY TAB1.ID -- more general version
欢迎使用stack exchange,请添加示例数据和所需输出,并添加为标记什么是您的DBMS2*3*4=24。。。巧合?没用。结果0,0,0但第一次选择必须返回一些结果,否则全部为零
SELECT COUNT(DISTINCT TAB1.ID),
COUNT(DISTINCT TAB2.ID) as Results,
COUNT(DISTINCT TAB3.ID) as Dropout
FROM TAB1 INNER JOIN
TAB2
ON TAB1.ID = TAB2.ID INNER JOIN
TAB3
ON TAB1.ID = TAB3.ID
WHERE TAB1.ID = '405'; -- Are the single quotes really necessary?