子查询:根据匹配的用户ID与团队ID和输出2维数组从一个表中选择

时间:2013-09-09 19:02:22

标签: php mysql sql

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

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

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

我知道它与我之前从未做过的子查询有关,我觉得我走错了路。此外,我将如何制作二维数组?

2 个答案:

答案 0 :(得分: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 

答案 1 :(得分:1)

如果要使用“exists”子查询执行此操作,则需要将其作为相关子查询:

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_id时向我teams提供所有行。