从另一个表中获取子级的属性

9njqaruj  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(241)

我在这里准备了一把小提琴
我有一个父表,如下所示。

+----------+------------+
| material | Attachment |
+----------+------------+
| 101      | 1          |
| 102      | 2          |
| 201      | 4          |
| 202      | 4          |
| 301      | 2          |
+----------+------------+

关系表如下所示

+--------+-------+
| parent | child |
+--------+-------+
| 101    | 201   |
| 101    | 202   |
| 101    | 204   |
| 101    | 205   |
| 102    | 301   |
| 102    | 302   |
+--------+-------+

我试图得到以下格式的儿童附件。预期产出。

+--------+-------+------------+
| parent | child | Attachment |
+--------+-------+------------+
| 101    | 201   | 4          |
| 101    | 202   | 4          |
| 101    | 204   | Child NA   |
| 101    | 205   | Child NA   |
| 102    | 301   | 2          |
| 102    | 302   | Child NA   |
+--------+-------+------------+

我试过这个问题。但我得到的是父母而不是孩子的依恋。

select c.parent,c.child,Attachment from parent p
join child c
on p.material=c.parent

在下面。

+--------+-------+------------+
| parent | child | Attachment |
+--------+-------+------------+
| 101    | 201   | 1          |
| 101    | 202   | 1          |
| 101    | 204   | 1          |
| 101    | 205   | 1          |
| 102    | 301   | 2          |
| 102    | 302   | 2          |
+--------+-------+------------+
vatpfxk5

vatpfxk51#

我认为这是一个 left join :

select r.parent, r.child, p.attachment
from relation r left join
     parent p
     on p.material = r.child;

这就产生了 NULL 而不是 'Child NA' .
这是一把小提琴。

camsedfj

camsedfj2#

根据您的评论,您可以这样写:

select c.parent, 
          c.child, 
          p.attachment
   from child c 
   left join parent p on p.material = c.child 
                         and 
                         c.parent IN (select material from parent);

相关问题