2016-06-03 2 views
1

я хочу присоединиться таблицей продуктов и таблицы заказов таким образом, что все продукты перечислены и цена всего заказанного товара по текущему пользователю показаны (Однако некоторые из этих цен равны- потому что на этот продукт не поступает заказ).Sql Выравнивание по левому краю возвращает ничего

Как пользователь подтверждает список, для всех продуктов в этом списке создается InvoiceId. Таким образом, invoiceId еще не указан на этом этапе (это мой вопрос).

В первой таблице много продуктов, но почему выход пуст?

Таблица продуктов:

ID       |       цена

Таблица заказов:

ID       |       Продукт         |         член       |       InvoiceID

(я добавил orders.member is null в отношении к this question, но не случайно пока):

Select * from products left join orders 
on products.id=orders.productId 
where (orders.member='"&request.cookies("member")&"' or orders.member is null) 
and orders.invoiceId is null 

Edit: Моя догадка: Есть также заказы других членов. Нарушают ли они текущий , где условие?

+1

'где (orders.member = ' "& Request.Cookies (" член ") &"' или orders.member равно нулю) и order.invoiceId является null' необходимо отфильтровать все строки, дважды проверьте условие. – shamsup

+0

Я не хочу включать заказы других участников, но я не знаю, как обновить условия. –

+0

Попробуйте использовать OUTER JOIN, специально для вашего использования. – Osy

ответ

0

Ваше состояние находится на второй таблице. Следовательно, она должна идти в пункте on:

Select * 
from products p left join 
    orders o 
    on p.id = o.productId and 
     o.member='"&request.cookies("member")&"' 
where o.invoiceId is null; 
+0

Почему вы не переместили последнее условие? –

+0

@AliSheikhpour. , ,Это превратило бы внешнее соединение во внутреннее. Это казалось наиболее вероятной логикой, которую вы хотите. –

+0

Состояние движения до ** ON ** возвращает больше строк! –

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