我有一个包含两个表组和成员的数据库。这些表中的列如下。如何根据另一个选择查询的数据运行选择查询
组表: GROUP_ID,组名
成员表: member_id,GROUP_ID,状态
我有需要与团体成员一起展示组的列表的应用程序。什么是SELECT * from groups
然后对每个组/行返回的最有效方式是在成员表上查询另一个成员以查询成员(例如SELECT * FROM members WHERE group_id=X
)。
我有一个包含两个表组和成员的数据库。这些表中的列如下。如何根据另一个选择查询的数据运行选择查询
组表: GROUP_ID,组名
成员表: member_id,GROUP_ID,状态
我有需要与团体成员一起展示组的列表的应用程序。什么是SELECT * from groups
然后对每个组/行返回的最有效方式是在成员表上查询另一个成员以查询成员(例如SELECT * FROM members WHERE group_id=X
)。
select
g.group_id,
g.group_name,
m.member_id,
m.status
from groups g
inner join members m on g.group_id = m.group_id
假设都members
和groups
有一个名为列group_id
,您可以使用join
获取你想要的结果:
select m.*
from members as m
inner join groups as g on m.group_id = g.group_id
where group_id = X
SELECT *
FROM groups g
LEFT JOIN members m
ON g.group_id = m.group_id
这将返回所有组及其成员。
可以引入变量,因此,例如
SET @groups = (SELECT TOP 1 group_id FROM groups)
,并把它添加到您的查询。
SELECT *
FROM groups g
LEFT JOIN members m
ON g.group_id = m.group_id
WHERE g.group_id = @groups
'顶部'?这不是SQL Server吗?我认为你的意思是'从组限制1中选择group_id') – Barranka 2014-08-28 19:21:59
你知道如何使用'JOIN'吗?如果不是,开始的好地方。 – tadman 2014-08-28 19:18:15
我想连接获取数据回来,但是我有一个单独的行为每个成员。在我的应用程序中,我想分别显示每个组,然后显示每个组的成员。理想情况下,在应用程序中,我会通过一组数组,然后groups.member将会员。我不确定谁会从连接中获得这种类型的输出?感谢您的快速响应! – 2014-08-28 19:35:46
您必须决定在您的应用程序代码中执行什么以及在查询中执行什么操作。有时MySQL不是你想做某些数据转换操作的地方。 – tadman 2014-08-28 19:37:03