2015-06-02 6 views
1

Использование студии управления для SQL Server 2008 R2.LEFT JOIN запрос не возвращает все строки в первой таблице

Попытка сделать LEFT JOIN, и мне нужно вернуть все строки из первой таблицы, независимо от того, какая строка может связываться со второй таблицей. Не уверен, что я объяснил это правильно.

Это то, что я получил прямо сейчас:

select a.id, a.name, b.store, b.stock 
from products a left join stock b 
on a.id = b.id 
where b.store = '001' 
order by a.id 

Мне нужен запрос, чтобы вернуть все продукты, которые продает компания, а также показать, что это запас в магазине 001.

Но так, как сейчас, он будет показывать только строки, в которых упоминается товарный запас в магазине 001.

Так что, в основном, мне нужен запрос, чтобы вернуть 0 запас, если в магазине 001 не упоминается.

Все товары, которые есть в наличии 002, также должны быть указаны вместе с 0 в наличии.

ответ

6

Передвиньте условие b от WHERE до ON, чтобы получить реальный статус LEFT JOIN. (Сейчас он выполняется как обычный inner join ...)

+0

Да, это правильно. Удалил мой. –

+0

Бум! Спасибо, соглашусь, как только система позволит это сделать. –

+1

Вы также захотите 'coalesce (b.stock, 0)', чтобы гарантировать, что вы получите '0' для акций после выполнения. –

Смежные вопросы