Как я могу получить все записи из одной таблицы, даже если в таблице JOINed нет соответствующих записей?

У меня есть таблица [Users] , упрощенная для этого примера:

 uID | uName | uSalesRep ----+-------+---------- 1 | John | 1 2 | Bob | 1 3 | Fred | 1 4 | Stu | 1 

И таблица продаж [Activity] :

 aID | aDate | aUserID | aText ----+------------+---------+--------------- 1 | 2013-10-09 | 1 | John did stuff 2 | 2013-10-14 | 2 | Bob did stuff 3 | 2013-10-17 | 3 | Fred did stuff 

Я хочу получить список всех торговых представителей вместе со своей деятельностью на неделю, начинающуюся с 14 октября 2013 года, и вот как я пытаюсь это сделать:

 SELECT uID, Name, aID, aDate, aText FROM [Users] LEFT JOIN [Activity] ON uID = UserID WHERE (aDate >= '2013-10-14' OR aDate = NULL) AND (aDate <= '2013-10-18' OR aDate = NULL) AND uSalesRep = 1 

Я использовал LEFT JOIN в надежде получить всех повторений, но я думаю, что это переопределяется требованиями aDate . Включение aDate = NULL включает в себя повторений без активности вообще, но те, кто имеет активность вне указанного диапазона, опущены.

Как я могу получить все репы хотя бы один раз, независимо от какой-либо активности, которую они записали?

Спасибо за ваше время.

Когда фильтр применяется к объединенной таблице, вам нужно поместить фильтр в join , а не в предложение where

 SELECT uID, Name, aID, aDate, aText FROM [Users] LEFT JOIN [Activity] ON uID = UserID AND (aDate >= '2013-10-14') AND (aDate <= '2013-10-18') WHERE uSalesRep = 1 
Давайте будем гением компьютера.