如何从包含sum的mysql查询中删除空行NULL字段

时间:2013-12-29 23:22:53

标签: php mysql

我有以下查询连接多个表

SELECT targa,
registrazioni.turno as turno,
conduttori.nome as nome,
conduttori.cognome as cognome,
spese_importo,risparmio,km, SUM(spese.spese_importo) AS totspese
FROM registrazioni LEFT JOIN conduttori
ON id_conduttore=conduttori.id
LEFT JOIN spese
ON registrazioni.id=spese.id_registrazione
WHERE dataora='$data';

当我添加这个SUM(spese.spese_importo)时,我开始遇到一个小问题,即使查询不应该对我有任何匹配结果,我得到一个空行,其中每个字段都是NULL。< / p>

当然,如果我从查询中删除该SUM,它会再次起作用,并且我没有任何行作为查询结果

我如何解决它并检查结果是否为空?

我试过通过mysql添加条件

WHERE targa IS NOT NULL

(targa只是我在不同字段之间随机选择的一个字段,它们都是NULL)

但它没有清除行,并通过php我使用条件

mysqli_num_rows($result)==0

但是现在我总是至少有一行它不起作用。

在获取行之前检查它的任何其他想法?

2 个答案:

答案 0 :(得分:1)

来自http://www.w3schools.com/sql/sql_join_left.asp

  

LEFT JOIN关键字返回左表(table1)中的所有行,以及&gt;右表(table2)中的匹配行。当没有匹配时,结果在右侧为NULL。

包含sum(spese.spese_importo)是否会创建一种情况,在这种情况下,您将在连接的左侧获得匹配但不在右侧 - 并且具有这些NULL?

答案 1 :(得分:1)

我认为您想要对结果进行分组。 尝试在查询结尾添加此内容:

GROUP BY registrazioni.id