Заморозка мозгов SQL - PullRequest
0 голосов
/ 11 июня 2011

Я хочу вернуть любого партнера, который не записывал ни одного заказа с указанной даты. Этот запрос должен быть просто-напросто простым.

select * from affiliate where 
idUser not  in ( 
  select idAffiliate from Orders
  where orderDate > '06/01/11'
)

Партнерская таблица имеет поле idUser, которое является внешним ключом для idAffiliate таблицы заказов. Выше не возвращает никаких записей, хотя я знаю, что у меня есть десятки филиалов, у которых нет заказов, размещенных с начала этого месяца. Если я изменю дату на '07 / 01/11 '- все партнерские записи возвращаются (очевидно), но подтверждают, что я использую правильные имена сущностей, если ничего больше.

высоко ценится

Ответы [ 2 ]

4 голосов
/ 11 июня 2011

Похоже, вы должны изменить idAffiliate на idUser во вложенном запросе. И лучше использовать EXISTS или NOT EXISTS вместо IN в таких случаях

select * from affiliate a 
where not exists ( 
  select 1 from Orders where orderDate > '06/01/11'
  and Orders.idUser = a.idUser
)
0 голосов
/ 13 июня 2011

Использование левого соединения:

select a.* 
from affiliate a
left join Orders o
    on a.idUser= o.idAffiliate
    and o.orderDate > '06/01/11'
where o.idAffiliate is null
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...