在我的数据库中,我有一个家庭树表,其中包含家庭成员的姓名,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

10-07 14:16
查看更多