我有一个表[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
我想获取所有销售代表的清单,以及他们在2013年10月14日开始的一周的活动,而我正在尝试这样做:
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句