1

我想从中选择login_users以获取以下字段:nameusernameuser_id

我有一个单独的表teams,其中包含 team_id 以及关联user_id的 ,例如,我可能有 bob 和 team1,jack 和 team2,jim 和 team1,paul 和 team2(所有单独的行,不是 bob 和 paul -> team2) . 如果我提供一个带有 team_ id 的函数,我希望能够找到所有关联user_id的 s,然后将该数据与之匹配login_users 以输出一个二维数组,其中包含nameusernameuser_id所有团队成员。

SELECT username, user_id, name FROM login_users WHERE EXISTS ( SELECT user_id FROM teams WHERE team_id= $team_id );

我知道这与我以前从未做过的子查询有关,而且我觉得我走错了路。此外,我将如何生成二维数组?

4

2 回答 2

2

为什么只有子查询??为什么不JOIN

SELECT u.username, u.user_id, u.`name` FROM login_users u
JOIN teams t ON(u.user_id = t.user_id)
WHERE team_id= $team_id 
于 2013-09-09T19:09:14.753 回答
1

如果要使用“存在”子查询执行此操作,则它需要是相关子查询:

SELECT username, user_id, name
FROM login_users
WHERE EXISTS (SELECT user_id
              FROM teams
              WHERE team_id = $team_id and
                    teams.user_id = login_users.team_id
             );

您缺少user_id. 该版本的查询是说“从login_users存在team_idteams”中获取所有行。

于 2013-09-09T19:12:01.583 回答