考虑以下表示体育俱乐部的SQL数据库体系结构:

父母(父母)有作为团队成员(成员)的孩子(孩子)。家长也可能是团队管理员(管理员)。请注意:
给定一个PARENT.id_parent,如何选择链接到此父级的TEAM.id_team列表(管理员,只是父级或两者兼而有之)。每个TEAM.id_team必须是唯一的,即使父级在团队中有子级并且是管理员。
以下是通过孩子与父母联系的团队:
SELECT DISTINCT TEAM. *
FROM TEAM
INNER JOIN MEMBERS ON MEMBERS.id_team = TEAM.id_team
INNER JOIN KID ON KID.id_kid = MEMBERS.id_kid
WHERE KID.id_parent = 1这篇文章给出了父母是管理员的团队:
SELECT DISTINCT TEAM . *
FROM TEAM
INNER JOIN ADMIN ON ADMIN.id_team = TEAM.id_team
WHERE ADMIN.id_parent = 1但我不知道怎样才能得到工会(或加入?)两者都是。
发布于 2017-10-21 10:09:07
这可能不是一种优化的方法(要做到这一点,我需要知道数据库中的表大小和其他细微之处)。但是我认为这会给你所需要的(因为你不需要团队名称)
select distinct a.parent_id, b.id_team
from parent as a
left join admin as b
on a.parent_id = b.parent_id
UNION --this will remove duplicates
select distinct a.parent_id, c.id_team
from parent as a
left join kid as b
on a.parent_id = b.parent_id
left join members as c
on b.id_kid = c.id_kidhttps://stackoverflow.com/questions/46862076
复制相似问题