在我的数据库中,我有一个家庭树表,其中包含家庭成员的姓名,ID和性别;以及另一个表,该表具有包含ID的父列和子列。我试图找到亲子关系,但在正确查询时遇到了一些困难。例如,我想找到“约翰”的父亲,因此我的查询是:
`select name from tree inner join relationship on id=parent where gender='m' and name="John"...`
那是不对的,我对从这里去哪里感到困惑。基本上,我想选择John的男性父母的名字,并最终扩展查询以选择John的父母。如何根据约翰的父母的姓名和亲属关系(通过父母和子女栏)搜索查询公式?
最佳答案
似乎您需要对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