LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1303|回复: 4

一个关联查询的问题

[复制链接]
发表于 2007-4-21 21:05:12 | 显示全部楼层 |阅读模式
两个表 users, user_group
users: id, username, password
user_group: id, uid, gid

user_group.uid 对应users.id

一个 users 可能有多个 gid.

现已知某个 users.id,
找出所有 与 users.id有相同 gid 的 users 的所有信息?

谢谢.
 楼主| 发表于 2007-4-21 21:10:06 | 显示全部楼层
一个可以的方法:
select * from users where id = (select uid from user_group where gid = (select gid from user_group where uid = 1));

还有没有别的?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-21 21:10:36 | 显示全部楼层
一个可以的方法:
select * from users where id = (select uid from user_group where gid = (select gid from user_group where uid = 1));

还有没有别的?
回复 支持 反对

使用道具 举报

发表于 2007-5-15 13:59:57 | 显示全部楼层
select users_group.uid, users.username, users.password from user_group inner join users on user_group.uid=users.id where gid in (select gid from user_group where uid=1);

你的方案应该修改为:
1>如果一个用户可以属于一个以上的组:
select * from users where id  in (select uid from user_group where gid in (select gid from user_group where uid = 1));
或者:
2>如果一个用户只能属于一个组:
select * from users where id in (select uid from user_group where gid = (select gid from user_group where uid = 1));
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-15 21:14:25 | 显示全部楼层
thanks!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表