Comment puis-je get tous les loggings d'une table, même s'il n'y a pas d'loggings correspondants dans la table JOINed?

J'ai une table de [Users] , simplifiée pour cet exemple:

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

Et un tableau des ventes [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 

Je veux avoir une list de tous les commerciaux , ainsi que leur activité pour la semaine débutant le 14 octobre 2013, et voici comment j'essaie de le faire:

 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 

J'ai utilisé un LEFT JOIN dans l'espoir de récupérer tous les représentants, mais je pense que cela est remplacé par les exigences aDate . Y compris aDate = NULL inclut les reps sans activité du tout, mais les reps ayant une activité en dehors de la plage spécifiée sont omis.

Comment puis-je get tous les représentants au less une fois, indépendamment de toute activité qu'ils ont enregistrée?

Merci pour votre time.

Lorsque le filter s'applique à la table jointe, vous devez placer le filter sur la join , pas dans la clause 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