我有以下查询连接多个表
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
但是现在我总是至少有一行它不起作用。
在获取行之前检查它的任何其他想法?
答案 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