簡體   English   中英

MySQL如何做一個內部聯接與第二個內部聯接到同一張表?

[英]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.

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