如何显示sql查询

时间:2017-04-20 00:40:20

标签: sql

我有一个SQL查询,但我有这个问题,我想sql查询显示我在两个表中的所有信息... 并且它有效,但是当我在句子中添加条件时,我无法获得完整的信息......

通过这个查询,我可以看到我的表的所有信息,即使我在某些列中没有信息......我需要它,但我想添加条件,当我添加条件时看不清楚。

结果: Query without condition

SELECT dbo.tblHoras.IdHora, dbo.tblHoras.Hora, dbo.tblHoras.Meta, COUNT(dbo.tblProductos.Serial) as Cantidad
FROM tblHoras full join
     tblProductos
     ON tblHoras.IdHora = tblProductos.IdHora
GROUP By tblHoras.IdHora, tblHoras.Hora, tblHoras.Meta
ORDER By tblHoras.IdHora;

这是带条件的查询,这并没有给我带来所有信息。

SELECT dbo.tblHoras.IdHora, dbo.tblHoras.Hora, dbo.tblHoras.Meta, COUNT(dbo.tblProductos.Serial) as Cantidad
FROM tblHoras full join
     tblProductos
     ON tblHoras.IdHora = tblProductos.IdHora
WHERE tblProductos.ActualFecha = '2017-04-19'
GROUP By tblHoras.IdHora, tblHoras.Hora, tblHoras.Meta
ORDER By tblHoras.IdHora;

结果: Query with condition

1 个答案:

答案 0 :(得分:1)

根据您仅按tblHoras中的列进行汇总的事实,我认为您需要LEFT JOIN

SELECT h.IdHora, h.Hora, h.Meta, COUNT(p.Serial) as Cantidad
FROM tblHoras h LEFT JOIN
     tblProductos p
     ON p.IdHora = p.IdHora AND p.ActualFecha = '2017-04-19'
GROUP By h.IdHora, h.Hora, h.Meta
ORDER By h.IdHora;

过滤条件应该在ON子句中。

请注意,我还引入了表别名,使查询更易于编写和阅读。