gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 09:19:51 25 4
gpt4 key购买 nike

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

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

我的 table 是:

Group(1) Table:  Group1, 
Member(2) table: MemberA, MemberB, MemberC etc.

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

我想链接表应该是这样的:

GroupID,  Group Name,GroupID, GROUP subscribed to Name 
Group(1), FancyGroup(1), Group(2), shabby Group(2)

这就是我希望 Group(1) 查询订阅 Group(2) 后的结果:

Fancy Group
Fancy MemberA
Fancy MemberB
Fancy MemberC
Shabby MemberA
Shabby Member B

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

更新 3/9:

这些是我的表名称:

该群组称为family;行是 (userid,loginName..etc)
成员(member)组称为member;行是(memberid、loginName、name、 等)
连接表称为user2member;行是 (userid,memberid) 。

这是我用于查询的内容:

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

我遇到了这个错误:~...在第 5 行的“WHERE family.userid = '30' ORDER BY member.name LIMIT 0, 30”附近使用的语法

想法?

最佳答案

我认为您正在尝试表示群组和成员之间的多对多关系。

为此,您需要一个组表,每个组对应一行。GroupID、GroupName,无论什么,无论什么。

您需要一个成员表,其中每个人一行。成员(member)ID、名字、姓氏,等等,等等。

然后您需要一个连接表、一个组成员资格表。最简单的组成员资格表有这样的行

成员(member)ID、群组ID

每个组的每个成员都有一行。如果您的应用程序需要,您可以向此表添加其他内容,例如 DateJoined 或 ActiveMembership 或其他内容。

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

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

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

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

这是一个 super 有用的设计模式。祝你好运。

关于php - mySQL表链接,组链接到其他成员列表,显示所有成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2392913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com