2017-08-17 77 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' 
相關問題