2013-03-11 70 views
2

我一直在寻找如何实现这一点,但我甚至不知道它是如何调用的(用于搜索它)。所以在这里我有什么:选择合并两个表,每个之间有一个

http://i45.tinypic.com/2zzqjco.png

该表中的数据是这样的:

 
[Products] 
ID - Name 
1 - Apple 
2 - Banana 

[Storehouses] 
ID - Name 
1 - General 
2 - Other 

[Stocks] 
Product - Storehouse - Stock 
    1 -  1  - 4 
    1 -  2  - 4 
    2 -  1  - 5 

Here I want get all the products on 'Storehouse' = '2' 
but if not exists return 'null' or '0' And what I pretend to get is: 

[SELECT] 
Product - Stock 
    1  - 4 
    2  - null OR '0' 

我不知道至极语句中使用,所以至少我需要一个线索。谢谢。

+2

不要使用'varchar'存储的整数。 – Kermit 2013-03-11 01:55:43

回答

3
SELECT a.ID, 
     a.Name, 
     COALESCE(b.Stock, 0) Stock 
FROM Products a 
     LEFT JOIN stocks b 
      ON a.ID = b.Product AND 
       b.StoreHouse = 2 

为了进一步获得更多的知识有关加入,请访问以下链接:

最后,该产品的商店数量如INT,而不是VARCHAR

结果

╔════╦════════╦═══════╗ 
║ ID ║ NAME ║ STOCK ║ 
╠════╬════════╬═══════╣ 
║ 1 ║ Apple ║  4 ║ 
║ 2 ║ Banana ║  0 ║ 
╚════╩════════╩═══════╝ 
+0

谢谢,工作就像一个魅力!链接也很有用。 – xtyp 2013-03-11 02:28:46