从多个表中选择多行

时间:2012-03-15 09:42:24

标签: php mysql

我有以下表结构:

- table users -
user_id
user_name

- table groups -
group_id
group_name

- table group_members -
group_id
user_id

我们也说我在DB中有这个:

users:
1:administrator

groups:
1:administrators
2:superusers
3:normal users

group_members:
1:1 (user_id 1 is member of group_id 1)
1:2
1:3

现在,如何有效地选择所有用户,以及他们所属的群组?我是否必须执行3个查询,选择所有3个表中的所有行,并使用PHP中的数组获取它,或者是否有更有效的方法来实现此目的?

2 个答案:

答案 0 :(得分:0)

select u.*, g.group_name
from users u
inner join group_members gm on gm.user_id = u.user_id
inner join groups g on g.group_id = gm.group_id
where u.user_id = 123

答案 1 :(得分:0)

如果group和group_members表中没有空字段,则此查询应该有效

如果有空字段则用左连接替换内连接

select users.username, group.group_name
from users  
inner join group_members on group_members.user_id = users.user_id
inner join groups  on group.group_id = group_members.group_id