2012-02-03 50 views
2

我有兩個表:用戶和user_depts。假設(對於這個問題),用戶只有'id'列,user_depts有2:'uid'和'did'。mysql:兩個表,但三個選擇標準

我正在尋找一個SQL行,它將返回給定用戶ID(假設爲7,儘管這將從PHP動態發佈)的所有部門的所有用戶ID都是關聯的。

我已經試過是:

​​

當然但這只是返回7.我想我可能要參加表本身,但我只知道的快捷語法的加盟,似乎還不夠。任何指針將不勝感激!

回答

1

使用EXISTS

SELECT uid FROM user_depts 
WHERE EXISTS (
    SELECT * FROM user_depts a 
    WHERE uid = 7 AND a.did = user_depts.did 
) 
+0

我認爲這將工作,但我也認爲它會比不相關的子查詢慢,檢查我的答案... – 2012-02-03 16:42:02

+0

下巴快速和完美工作迴應。謝謝! – yycroman 2012-02-03 16:43:46

0

我正在尋找一個SQL一行將返回所有用戶ID的所有 部門與給定用戶ID(假設7,雖然 這個會從PHP中動態獲得)相關聯。

如果這意味着要找到所有與該用戶ID的用戶:7具有連接到它的這個user_departent是您查詢:

select users.id from users 
inner join user_depts.uid = users.id 
where users.id = 7 
0

從那裏在做 user_depts選擇UID(選擇從user_depts確實其中uid = 7)

  1. 首先選擇所有做了與該用戶正使用的子查詢
  2. 然後,選擇所有相關聯的所選部門的user_id。

這是您可以做到的最好方法。 ,如果你想刪除重複的結果,那麼你可以使用不同的