如何从这两个表中打印孩子、父亲、母亲?

Lon*_*gat 4 sql oracle pivot join group-by

下面是表格:

关系

西德 PID
101 第202章
第566章 第322章
第875章 第345章

ID 姓名 性别
101 里亚 F
第566章 安缦 中号
第202章 拉凯什 中号
第875章 幸运的 中号
第202章 瑞娜 F
第322章 雷娜 F
第345章 罗希特 中号
第322章 莫希特 中号
第345章 米娜 F

输出

孩子 母亲 父亲
里亚 瑞娜 拉凯什
安缦 雷娜 莫希特
幸运的 罗希特 米娜

我试过这个:

SELECT     mother,
           father
FROM      (
                      SELECT     id,
                                 name,
                                 sum(
                                 CASE
                                            WHEN gender = 'F' THEN 1
                                            ELSE 0) AS mother,
                                 sum (
                                 CASE
                                            WHEN gender = 'M' THEN 1
                                            ELSE 0) AS father
                      FROM       people
                      INNER JOIN relation
                      ON         people. id = relation.p_id
                      GROUP BY   id,
                                 name) t1
INNER JOIN relation
ON         relation.p_id = t1.id
Run Code Online (Sandbox Code Playgroud)

请让我知道查询,以了解如何获取此输出。上面的查询不起作用,我也无法弄清楚如何输出子项。

for*_*pas 6

您必须加入relation2 个副本people
第一份副本将返回孩子的姓名,第二份副本将返回父母的姓名。
然后按孩子分组并使用条件聚合来获取一行中父母的姓名:

SELECT c.name Child, 
       MAX(CASE WHEN p.gender = 'F' THEN p.name END) Mother, 
       MAX(CASE WHEN p.gender = 'M' THEN p.name END) Father
FROM relation r
INNER JOIN people c ON c.id = r.cid
INNER JOIN people p ON p.id = r.pid
GROUP BY r.cid, c.name;
Run Code Online (Sandbox Code Playgroud)

请参阅演示