首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mySQL表链接,组链接到其他成员列表,显示所有成员

mySQL表链接,组链接到其他成员列表,显示所有成员
EN

Stack Overflow用户
提问于 2010-03-06 15:10:20
回答 1查看 1.4K关注 0票数 0

我有一个带有group(g1)的数据库和一个members(m1)列表,它本身工作得很好。

但是,我想添加group(g1)将不同的groups(g2-3)添加到它的列表中的能力,以便查询结果会弹出所有的members(M1)+(m2-3)

我的桌子是:

代码语言:javascript
复制
Group(1) Table:  Group1, 
Member(2) table: MemberA, MemberB, MemberC etc.

我想我需要某种类型的链接表,其中group(1)输入它想要订阅的Group(2)成员。

我在想,链接表看起来应该是:

代码语言:javascript
复制
GroupID,  Group Name,GroupID, GROUP subscribed to Name 
Group(1), FancyGroup(1), Group(2), shabby Group(2) 

这就是我希望Group(1)查询的结果在订阅Group(2)之后的样子。

代码语言:javascript
复制
Fancy Group
Fancy MemberA
Fancy MemberB
Fancy MemberC
Shabby  MemberA
Shabby Member B

有什么想法吗?我意识到这是一个很长的问题,但我不知道有一个更短的方法来纠正它?

更新3/9:

这些是我的桌子名:

这个组被称为family;行是(userid,loginName..etc)

成员组称为member;行是(memberid,loginName,name,等)

连接表称为user2member;行是(userid,memberid)。

以下是我用于查询的内容:

代码语言:javascript
复制
SELECT member.name
   FROM family
      JOIN user2member on family.userid = member.memberid
      JOIN member on user2member.name = member.name
     WHERE family.userid = '30'
   ORDER BY member.name

我得到了这个错误:~...syntax to use near 'Â WHERE family.userid = '30' ORDER BY member.name LIMIT 0, 30' at line 5

想法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-03-06 21:52:09

我认为你试图代表团体和成员之间的多对多关系。

要做到这一点,您需要一个组表,每个组都有一行。GroupID,GroupName,随便吧,随便吧。

您需要一个每个人都有一行的成员表。MemberID,Firstname,Lastname,随便什么。

然后,您需要一个连接表,一个组成员表。最简单的组成员关系表有如下所示的行

MemberID,GroupID

它每组成员有一行。如果应用程序需要,可以将其他内容添加到此表中,如DateJoined或ActiveMembership或其他任何东西。

然后,您将使用joins来获取数据。如果您想要“极客”组中的成员列表,您可以使用这样的联接。

代码语言:javascript
复制
SELECT m.Firstname, m.Lastname
  FROM group g
  JOIN groupmembership gm on g.GroupID = gm.GroupID
  JOIN member m on gm.MemberID = m.MemberID
 WHERE g.GroupName = 'geeks'
ORDER BY m.Lastname, m.Firstname

如果您想要一个不属于任何组的成员列表,您可以这样做。

代码语言:javascript
复制
SELECT m.Firstname, m.Lastname
  FROM member m
  LEFT JOIN groupmembership gm on m.MemberID = gm.MemberID
 WHERE gm.GroupID IS NULL
ORDER BY m.Lastname, m.Firstname

这是一个非常有用的设计模式。祝好运。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2392913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档