简单的家谱查询

easy family tree query

只有一个table。

Table 姓名 Family_tree.

为 Nick 查询所有 children。 Nick也可以是妈妈!

NAME                 ID    FATHER_ID    MOTHER_ID
--------------- ---------- ---------- ----------
Nick                  23         25        24
Jane                  10         27        26
Perl                  15         9         13
Katrin                50         6         12
Sandra                1          3          8
Demi                  2          3          8
Deimar                3          7          5
Gandalf               4          6          5
Bill                  5         10         23
Kelly                 6         22         43
Dolmar                7         11         20

如果您说代码 = 3 表示尼克是此人的父亲:

如果你只想return名字:

SELECT Name FROM table WHERE code = 3

如果您想 return 一切:

SELECT * FROM table WHERE code = 3

我在这句话中键入的“3”可能必须用单引号引起来,具体取决于“代码”字段的数据类型 + 特定的 SQL 方言。

编辑:不太确定我理解这个问题,但 Rajee 的回答可能是正确的。您可以使用别名将 table 加入自身,即 Family_Tree A,Family_Tree B

另一种可能性是子查询。因为我不确定是否理解问题,所以我不知道这是否是您要查找的内容,但将其视为子查询的示例:

SELECT * FROM Family_Tree A WHERE FatherID = (SELECT ID From Family_Tree B WHERE Other Conditions = Other Conditions)

类似的东西,但我的第一个答案或 Rajee 的答案可能会完成更多的澄清。

select t1.name 作为 child, t2.name 作为父亲
来自 table t1 加入 table t2 在 t1.code = t2.father_id

这将给出以下内容o/p

Child      Father
______________________________
Nick        fill from your tab
Calvin      fill from your tab
Sofia       Nick  

你可以试试下面的代码 -

SELECT 
  FROM Family_tree T1
  JOIN (SELECT ID, FATHER_ID
          FROM Family_tree
         UNION ALL
        SELECT ID, MOTHER_ID
          FROM Family_tree) T2 ON T1.ID = T2.FATHER_ID;

可能是这样的:

select name, father_id, mother_id from family_tree 
  where father_id in 
(select id from family_tree
  where name = 'Nick')
or mother_id in 
 (select id from family_tree
  where name = 'Nick')

或者如果您只需要尼克作为父亲,那么:

select name, father_id, mother_id from family_tree 
      where father_id in 
    (select id from family_tree
      where name = 'Nick')

另外,如果你只需要 children ,你不需要使用 connect by...prior for grandchildren, grandgrandchildren,等等