我有一个SQL查询,但我有这个问题,我想sql查询显示我在两个表中的所有信息... 并且它有效,但是当我在句子中添加条件时,我无法获得完整的信息......
通过这个查询,我可以看到我的表的所有信息,即使我在某些列中没有信息......我需要它,但我想添加条件,当我添加条件时看不清楚。
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;
答案 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
子句中。
请注意,我还引入了表别名,使查询更易于编写和阅读。