[英]mysql how to do an inner join with a second inner join to the same table?
我有兩張桌子,一張有筆記
id, note, client#, flag, employee#, date
另一個與員工
id, employee#
我想查找所有帶有“ N”標志的筆記,但不要為相同的日期和客戶編號有“ Y”標志,而僅針對employee表中的employee。
例如,我開始於:
1 mynote 123 Y abc 1/1/2011
2 mynote 123 N abc 1/1/2011
3 mynote 124 N abc 1/1/2011
4 mynote 124 N ccc 1/1/2011
(在我的員工表中,我有員工abc)
所以我開始:
SELECT * from notes a inner join employees b on a.employee = b.employee WHERE a.flag = 'N'
那行得通,我得到的似乎是僅適用於employees表中當前雇員的合理注釋列表(例如,僅abc-上面的記錄2和3)。
現在,我只需要獲取記錄3,因為它是“ N”記錄,並且在相同的日期和客戶編號下沒有匹配的“ Y”記錄。
我似乎無法弄清楚要添加的多余部分。
謝謝。
嘗試為此使用聯合。 這樣,您可以處理2個不同的查詢。
如果將flag =
表達式移動到ON
子句,它將變得更加簡單:
SELECT * from employees e
inner join notes n1
on n1.employee = e.employee
AND n1.flag = 'N'
inner join notes n2
ON n2.employee = e.employee
AND n2.client = n1.client AND n2.date = n1.date AND n2.flag = 'Y'
我還從dasblinkenlight借用了改進的別名。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.