2016-12-07 5 views
0

2つのテーブルがあり、1つにアイテムがあり、2つ目には在庫があります。 在庫がない商品を選択したいと考えています。 この場合、2番目のテーブルにデータはありません。ここで、結合がNULLであることを選択します。

表1

ID Item 
01 Car 
02 Bike 
03 Motorbike 

表2

ID Amount 
01 1 
02 -1 

だから、項目03には、株式には、現在ではありません。

私のSQLは動作しません "在庫量= 0を有する" 原因この

SELECT 
    ITEM.ITEMNR, 
    LAGERBESTAND.AMOUNT 
FROM 
    ITEM 
INNER JOIN STOCKAMOUNT ON STOCKAMOUNT.ITEMLFDNR = ITEM.LFDNR 
GROUP BY 
    ITEM.ITEMNR, 
    STOCKAMOUNT.AMOUNT 
HAVING 
    STOCKAMOUNT.AMOUNT = 0 

のように見えます。

答えて

3

左外部結合が必要です。内部結合は結合条件が満たされている行のみを返します。

私はあなたがこれをグループ化する必要はないと思います。

+0

はい、私は前に番号を探していたのでグループ化しました。ありがとう! –

2

これは、左結合を使用して動作します。

SELECT 
    ITEM.ITEMNR, 
    coalesce(STOCKAMOUNT.AMOUNT,0) amount 
FROM ITEM 
LEFT JOIN STOCKAMOUNT 
ON STOCKAMOUNT.ITEMLFDNR = ITEM.LFDNR 
WHERE STOCKAMOUNT.ITEMLFDNR IS NULL 
関連する問題