在我的数据库中,我有一个包含家庭成员的姓名,ID和性别的家谱表,以及另一个包含父列和包含id的子列的表。我试图找到父子关系,我在查询中遇到一些困难。例如,我想找到'John'的父亲,所以我的查询是:
`select name from tree inner join relationship on id=parent where gender='m' and name="John"...`
这是不对的,我很困惑从哪里开始。基本上我想选择John的父母的名字,并最终扩展查询以选择John的母亲和父亲。如何根据他们的姓名和关系(通过父列和子列)来制定我的查询来搜索John的父母?
答案 0 :(得分:2)
好像你需要两个对tree
表的引用。
如果没有表格和示例数据的定义,我们只是在猜测。
SELECT p.name
FROM tree p
JOIN relationship r
ON r.parent = p.id
JOIN tree c
ON c.id = r.child
WHERE p.gender = 'm'
AND c.name = 'John'
假设(例如)
tree
id name gender
---- ---- ------
402 John m
399 Adam m
和
relationship
parent child
------ -----
399 402