我想从login_users
中选择以获取以下字段:name
,username
和user_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
的二维数组所有团队成员的username
和user_id
。
SELECT username, user_id, name FROM login_users WHERE EXISTS ( SELECT user_id FROM teams WHERE team_id= $team_id );
我知道它与我之前从未做过的子查询有关,我觉得我走错了路。此外,我将如何制作二维数组?
答案 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
提供所有行。