在我的网站上,我有会员。这些成员可以创建项目,其他成员可以跟踪每个项目:
我有一个名为“members”的第一个Mysql表,其中包含以下列:
id / name
我有一个名为“Projects”的第二个Mysql表:
id / founder
我有一个名为“Follow”的第二个Mysql表:
id / idmember / idproject
我的目标是向任何成员展示工作人员:
列出所有成员:
按照与我相同的项目
关注我创立的项目
创建了我关注的项目
但我需要显示没有重复的结果。例如,如果我关注您的项目,并且我是您关注的项目的创始人,那么您只需要看一次我。
我已经开始使用数组,这似乎是一个很好的解决方案,但我真的无法想象如何做到这一点。 感谢。
答案 0 :(得分:0)
假设您的members.id
为1337
且Projects.founder
是外键加到members.id
,那么您可以使用UNION
制作包含重复项的表,然后DISTINCT
1}}:
SELECT DISTINCT id, name
FROM (
SELECT members.id, members.name
FROM members, Follow f1, Follow f2
WHERE members.id = f1.idmember
AND f1.idproject = f2.idproject
AND f2.idmember = 1337
UNION
SELECT members.id, members.name
FROM members, Follow, Project
WHERE members.id = Follow.idmember
AND Project.id = Follow.idproject
AND Project.founder = 1337
UNION
SELECT members.id, members.name
FROM members, Follow, Project
WHERE Follow.idmember = 1337
AND Project.id = Follow.idproject
AND Project.founder = members.id
)