Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我想在sql中联接三个表,但无法获得所需的结果_Sql - Fatal编程技术网

我想在sql中联接三个表,但无法获得所需的结果

我想在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

这意味着它可以将条目相乘

您可以在下面尝试使用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'

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?