Php mySQL表链接,组链接到其他成员列表,显示所有成员
我有一个带有Php mySQL表链接,组链接到其他成员列表,显示所有成员,php,mysql,dreamweaver,Php,Mysql,Dreamweaver,我有一个带有组(g1)和成员列表(m1)的数据库,它本身运行良好 但是,我想添加组(g1)的功能,将不同的组(g2-3)添加到它的列表中,这样一个查询将显示所有成员(M1)+(m2-3) 我的桌子是: Group(1) Table: Group1, Member(2) table: MemberA, MemberB, MemberC etc. 我想我需要某种类型的链接表,其中组(1)输入它想要订阅的组(2)成员 我在想链接表应该是这样的: GroupID, Group Name,Grou
组(g1)
和成员列表(m1)
的数据库,它本身运行良好
但是,我想添加组(g1)
的功能,将不同的组(g2-3)
添加到它的列表中,这样一个查询将显示所有成员(M1)+(m2-3)
我的桌子是:
Group(1) Table: Group1,
Member(2) table: MemberA, MemberB, MemberC etc.
我想我需要某种类型的链接表,其中组(1)
输入它想要订阅的组(2)
成员
我在想链接表应该是这样的:
GroupID, Group Name,GroupID, GROUP subscribed to Name
Group(1), FancyGroup(1), Group(2), shabby Group(2)
这就是我希望组(1)
查询在订阅组(2)
后的结果:
有什么想法吗?我意识到这是一个很长的问题,但我不知道一个更短的方法来纠正它
更新3/9:
以下是我的表名:
该组称为系列
;行是(userid、loginName等)
成员组称为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行使用near'WHERE family.userid='30'ORDER BY member.name LIMIT 0,30'
想法?我想你是在试图表现团队和成员之间的多对多关系
为此,您需要一个组表,每个组有一行。
GroupID,GroupName,随便什么,随便什么
您需要一个成员表,每个人对应一行。
MemberID,Firstname,Lastname,随便什么,随便什么
然后需要一个联接表,一个groupmembership表。最简单的组成员资格表有如下行
MemberID,GroupID
每个组中每个成员有一行。如果应用程序需要,您可以将其他内容添加到此表中,例如DateJoined或ActiveMembership,或其他任何内容
然后,您将使用连接来取回数据。如果您想要“极客”组中的成员列表,您可以使用这样的连接
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
这是一个非常有用的设计模式。祝你好运。我添加了正确的组名和成员名。我感到困惑。我还把你的查询和我的变量放在一起。我得到以下代码:错误1064-您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以获得正确的语法,以便在g.memberid=gm.userid上使用near'JOIN user2member gm on g.memberid=gm.userid加入gm.name=m'在第3行,我用您的答案发布了一个新问题……我认为我的思路是正确的。我认为新问题的措辞更为恰当。谢谢你的帮助。你说得对,我并没有真正测试这个东西,很抱歉。1064不是一个伟大的错误信息吗?
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