2016-12-07 6 views
0

У меня есть две таблицы, одна имеет предметы, а вторая имеет запас. Я хочу выбрать элементы, в которых нет запаса. В этом случае во второй таблице нет данных.Выбрать, где Join is Null

Таблица 1

ID Item 
01 Car 
02 Bike 
03 Motorbike 

Таблица 2

ID Amount 
01 1 
02 -1 

Так пункт 03 в данный момент нет на складе.

My SQL выглядит следующим образом

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 

причина "имея запас количество = 0" не работает.

ответ

3

Вам нужно левое внешнее соединение, внутреннее соединение будет возвращать только строки, в которых выполняется условие соединения.

Я не считаю, что вам нужна группировка для этого.

+0

Да, это правильно. У меня была группировка, потому что я искал номера раньше. Thanx! –

2

Это работает, используя левое соединение.

SELECT 
    ITEM.ITEMNR, 
    coalesce(STOCKAMOUNT.AMOUNT,0) amount 
FROM ITEM 
LEFT JOIN STOCKAMOUNT 
ON STOCKAMOUNT.ITEMLFDNR = ITEM.LFDNR 
WHERE STOCKAMOUNT.ITEMLFDNR IS NULL