2017-08-17 74 views
0

过滤另一个我有2个表如何列出在表中的所有项目通过在MySQL

表1 = visitacli

codcli-char(3) 
nomecli-varchar(100) 
------------------------ 
001 - Joao 
002 - Maria 
003 - Joana 

表2 = visitaate

codcli-char(3) 
datavisita-char(8) 
quantidade-integer 
------------------------- 
001 - 20170810 - 2 
001 - 20170811 - 3 
001 - 20170815 - 5 
002 - 20170812 - 1 
002 - 20170816 - 9 

我的选择

SELECT 
    visitacli.codcli, 
    visitacli.nomecli, 
    Sum(visitaate.quantidade) AS totalvisitas 
FROM 
    visitacli 
LEFT JOIN visitaate ON visitacli.codcli = visitaate.codcli 
WHERE 
    visitaate.datavisita >= '20170801' 
AND visitaate.datavisita <= '20170817' 
GROUP BY 
    visitacli.codcli, 
    visitacli.nomecli 

结果:

001 - Joao - 10 
002 - Maria - 10 

但是......没有列出003 - Joana。 如何使用表2的总数列出表1中的所有项目?

回答

0

使用外连接。只是求和使内部连接只显示两个表中的数据。正确的或左外连接应该做你需要的。

1

您必须将WHERE从句的谓语动:

WHERE 
    visitaate.datavisita >= '20170801' 
AND visitaate.datavisita <= '20170817' 

LEFT JOIN visitaate 
    ON visitacli.codcli = visitaate.codcli 
     AND visitaate.datavisita >= '20170801' 
     AND visitaate.datavisita <= '20170817' 
相关问题