簡體   English   中英

MySQL從多個表中選擇條件

[英]MySQL select from multiple table with conditions

我有4張桌子:

  • ARTICOLE
  • BAR
  • BUCATARIE
  • MAGAZIE

mysql> select * from ARTICOLE;

| OID | ART      |  
|   1 | TEST     |
|   2 | TESTQ    |
|   3 | MYART    |
|   4 | MYARTBUC |

設置4行(0.00秒)

mysql> select * from BAR;

| OID | ART   | CANT     |
|   1 | TEST  |  3.00000 |
|   2 | TESTQ |  1.00000 |
|   3 | MYART | 20.00000 |

設置3行(0.00秒)

mysql> select * from BUCATARIE;

| OID | ART      | CANT     |
|   1 | TEST     |  5.00000 |
|   2 | MYARTBUC | 10.00000 |

設置2行(0.00秒)

mysql> select * from MAGAZIE; 空置(0.00秒)

下面的查詢

mysql> select a.ART,sum(bar.CANT),sum(buc.CANT),sum(mag.CANT) from ARTICOLE a,BUCATARIE buc,BAR bar,MAGAZIE mag where a.ART=bar.ART and a.ART=bar.ART and a.ART=mag.ART group by a.ART;

返回:


空置(0.00秒)

如何查詢才能返回:

| ART | sum(bar.CANT) | sum(buc.CANT) | sum(mag.CANT) |
TEST  |  3.00000 | 5.00000 | NULL |
TESTQ |  1.00000 | NULL | NULL |
MYART | 20.00000 | NULL | NULL|
MYARTBUC | NULL | 10.00000 | NULL |

????

任何幫助表示贊賞。

您需要使用LEFT JOIN來包含其他表的結果,而不會過濾掉不匹配的記錄:

   select a.ART,sum(bar.CANT),sum(buc.CANT),sum(mag.CANT)
     from ARTICOLE a
left join BUCATARIE buc on buc.ART = a.ART
left join BAR bar on bar.ART = a.ART
left join MAGAZIE mag on mag.ART = a.ART
group by a.ART;

樣本結果:

ART         SUM(BAR.CANT)   SUM(BUC.CANT)   SUM(MAG.CANT)
MYART       20      
MYARTBUC                    10  
TEST        3               5   
TESTQ       1       

演示: http ://www.sqlfiddle.com/#!2/ 6efb2/2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM