PHP/MySQL多表连接/联合
我是MySQL新手,在从多个表中选择项时遇到问题 我有3个表(用户、组、组成员)。以下是每个表的内容:PHP/MySQL多表连接/联合,mysql,Mysql,我是MySQL新手,在从多个表中选择项时遇到问题 我有3个表(用户、组、组成员)。以下是每个表的内容: 用户:用户id、用户电子邮件、用户名称 组:组id、组名称 组成员:组id、用户id 给定用户id,我想在一个查询中查找用户电子邮件,用户名,组id和组名。问题是用户一次可以在3个组中,因此在我的查询中,我需要从group_members和groups表中获取三行。任何帮助都将不胜感激,以下是我最好的两次尝试 SELECT groups.group_id, groups.group_nam
- 用户:用户id、用户电子邮件、用户名称
- 组:组id、组名称
- 组成员:组id、用户id
用户电子邮件
,用户名
,组id
和组名
。问题是用户一次可以在3个组中,因此在我的查询中,我需要从group_members和groups表中获取三行。任何帮助都将不胜感激,以下是我最好的两次尝试
SELECT groups.group_id, groups.group_name, users.user_email, users.user_name
FROM groups, membership, users
WHERE membership.user_id=<user id> AND
membership.group_id = groups.group_id LIMIT 3;
SELECT groups.group_id, groups.group_name, users.user_email, users.user_name
FROM groups
LEFT JOIN membership ON groups.group_id = membership.group_id
LEFT JOIN users ON membership.user_id = users.user_id
WHERE (users.user_id = <user id>);
选择groups.group\u id、groups.group\u name、users.user\u email、users.user\u name
来自组、成员、用户
其中membership.user_id=和
membership.group\u id=groups.group\u id限制3;
选择groups.group\u id、groups.group\u name、users.user\u email、users.user\u name
来自团体
在groups.group\u id=membership.group\u id上左加入成员身份
在membership.user\u id=users.user\u id上左加入用户
其中(users.user_id=);
我可以得到一行组id和组名称,但不是全部3行。感谢您的帮助。使用此查询:
SELECT groups.group_id, groups.group_name, users.user_email, users.user_name
FROM groups, membership, users
WHERE users.user_id=%s AND
membership.user_id=users.user_id AND
membership.group_id = groups.group_id
LIMIT 3
这里的问题是,您将获得和用户所属的组一样多的重复电子邮件和用户名的行。如果您只需要一次用户名和电子邮件,以及一个组列表,那么它将是2个请求
<>但这也会返回用户名和电子邮件,在组PyId和GROPPENGNORE中使用空值,当用户不属于任何组时。如果只用于显示,您可以从……中考虑<代码>选择…按用户分组。用户id
SELECT groups.group_id, groups.group_name, users.user_email, users.user_name
FROM users
left inner join membership on membership.user_id = users.user_id
inner join groups.group_id on groups.group_id = membership.group_id
Where users.user_id = %user_id%