【发布时间】:2011-11-28 11:20:10
【问题描述】:
我有 3 个表,用户、组和用户组。
UserGroups 包含用户 id_user 和组 id_group。
User 有 id_user,Group 有 id_group。
我的问题是:
如何从所有 3 个表中提取数据以实现以下目标:
- 列出组表中的所有组
- 列出用户组表中已选择的组
- 在用户表中列出不在用户组中的用户。
- 在 UserGroup 表中列出属于某个组的用户。
我有以下 SQL 语句,但我希望将它们组合成 1 个 sql 语句。可以吗??
select * from grupos
和
SELECT DISTINCT usuarios.id_usuario
FROM usuarios
WHERE usuarios.id_usuario
NOT IN (SELECT DISTINCT id_usuario FROM usuarios_grupos)
其中,第一个查询显示:
Groups
- 约翰
- 蒂姆
- 简
第二个查询显示如下:
User
1. John
2. Jane
3. Tom
User Group
Empty
After selection of John:
User
2. Jane
3. Tom
User Group
1. John
Instead of having the following (which I have now):
User
1. John
2. Jane
3. Tom
After Selection of John:
UserGroup
1. John
就像我上面演示的那样,如果我选择一个组和一个用户,并将其添加到用户组。用户组将显示“组,用户”。 (例如发展,汤姆)。
但是,Groups 数据表仍将显示如下:
- 发展
- 网络
- 项目
用户数据表将被“更新”:
- 蒂姆
- 简。
我尝试了以下方法,但没有得到我想要的结果:
SELECT grupos.id_grupo, usuarios.id_usuario
FROM usuarios_grupos
INNER JOIN
grupos
ON
usuarios_grupos.id_grupo = grupos.id_grupo
INNER JOIN
usuarios
ON
usuarios_grupos.id_usuario = usuarios.id_usuario
WHERE
usuarios.id_usuario
NOT IN (SELECT DISTINCT id_usuario FROM usuarios_grupos)
【问题讨论】:
-
我建议您澄清您的问题 - 目前,我们有您的问题域的描述,以及您为回答问题而编写的查询,但没有您想要回答的问题的描述.
-
好吧,简而言之,我试图通过在我现有的 SQL 语句中添加 Join 或 Union 来显示用户所属的组 SELECT DISTINCT usuarios.id_usuario FROM usuarios WHERE usuarios.id_usuario NOT IN (从 usuarios_grupos 中选择不同的 id_usuario)