在MySQL查询

时间:2016-11-30 04:37:38

标签: mysql sql

在我的数据库中,我有一个包含家庭成员的姓名,ID和性别的家谱表,以及另一个包含父列和包含id的子列的表。我试图找到父子关系,我在查询中遇到一些困难。例如,我想找到'John'的父亲,所以我的查询是:

`select name from tree inner join relationship on id=parent where gender='m' and name="John"...`

这是不对的,我很困惑从哪里开始。基本上我想选择John的父母的名字,并最终扩展查询以选择John的母亲和父亲。如何根据他们的姓名和关系(通过父列和子列)来制定我的查询来搜索John的父母?

1 个答案:

答案 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