Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.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查询,每个表都具有onde条件?_Sql_Database_Join_Group By_Pivot - Fatal编程技术网

如何使用多个表进行sql查询,每个表都具有onde条件?

如何使用多个表进行sql查询,每个表都具有onde条件?,sql,database,join,group-by,pivot,Sql,Database,Join,Group By,Pivot,我想从一个表中获取一些数据,但这些数据是由不同的条件分隔的,例如,有多少行的一列等于1,有多少行的一列等于1,直到数字5为止。我这样做: Select Count(E.ID) as emergencia, Count(M.ID) as muitourgente, count(U.ID) as urgente, count (PU.ID) as poucourgente, count (MU.ID) as menosurgente From ConsultaMedica as E, Consul

我想从一个表中获取一些数据,但这些数据是由不同的条件分隔的,例如,有多少行的一列等于1,有多少行的一列等于1,直到数字5为止。我这样做:

Select Count(E.ID) as emergencia,
Count(M.ID) as muitourgente,
count(U.ID) as urgente,
count (PU.ID) as poucourgente,
count (MU.ID) as menosurgente 
From ConsultaMedica as E,
ConsultaMedica as M,
consultaMedica as U,
consultamedica as PU,
consultamedica as MU

WHERE E.ID_gravidade = 1 And M.ID_gravidade = 2 AND U.ID_gravidade = 3 AND PU.ID_gravidade = 4 AND MU.ID_gravidade = 5;
我的表是ConsultaMedica,我想得到数字1、2、3、4和5在一次查询中出现在ID_Gravidade列中的次数


我的结果是0 | 0 | 0 | 0 | 0,但我预期为1 | 0 | 0 | 0,因为我有一行的列ID|Gavidade等于1,并且没有其他数字的列。

请勿交叉连接。您只需使用条件聚合即可:

select 
    sum(case when ID_gravidade = 1 then 1 else 0 end) as emergencia,
    sum(case when ID_gravidade = 2 then 1 else 0 end) as muitourgente,
    sum(case when ID_gravidade = 3 then 1 else 0 end) as urgente,
    sum(case when ID_gravidade = 4 then 1 else 0 end) as poucourgente,
    sum(case when ID_gravidade = 5 then 1 else 0 end) as menosurgente
from ConsultaMedica
where ID_gravidade between 1 and 5

注意:如果ID_gravidade的所有值都在1和5之间,则可以删除where子句。

不要交叉连接。您只需使用条件聚合即可:

select 
    sum(case when ID_gravidade = 1 then 1 else 0 end) as emergencia,
    sum(case when ID_gravidade = 2 then 1 else 0 end) as muitourgente,
    sum(case when ID_gravidade = 3 then 1 else 0 end) as urgente,
    sum(case when ID_gravidade = 4 then 1 else 0 end) as poucourgente,
    sum(case when ID_gravidade = 5 then 1 else 0 end) as menosurgente
from ConsultaMedica
where ID_gravidade between 1 and 5

注意:如果ID_gravidade的所有值都在1到5之间,则可以删除where子句。

不需要自联接,有多种方法可以做到这一点。根据您的数据库,您可以组合和


自联接是不必要的,有很多方法可以做到这一点。根据您的数据库,您可以组合和


请标记您正在使用的DBMS。您的答案如下,但此注释将帮助您在将来调试和理解。全部为零的结果是因为最后四个值都没有行,where子句强制每个值至少有一个。另外,在一个较大的表上,该查询将需要很长时间才能运行。请标记您正在使用的DBMS。您的答案如下,但此注释是为了帮助您在将来调试和理解。全部为零的结果是因为最后四个值都没有行,where子句强制每个值至少有一个。在较大的表上,该查询也需要很长时间才能运行。