簡體   English   中英

即使JOINed表中沒有對應的記錄,如何從一個表中獲取所有記錄?

[英]How can I get all records from one table, even if there are no corresponding records in the JOINed table?

我有一個[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 包括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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM