2012-02-03 54 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。

这是您可以做到的最好方法。 ,如果你想删除重复的结果,那么你可以使用不同的