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

Sql 从另一个表中获取子表的属性,sql,sql-server,sql-server-2012,hierarchy,Sql,Sql Server,Sql Server 2012,Hierarchy,我准备了一份 我有一个父表,如下所示 +----------+------------+ | material | Attachment | +----------+------------+ | 101 | 1 | | 102 | 2 | | 201 | 4 | | 202 | 4 | | 301 | 2 | +----------+-----------

我准备了一份

我有一个父表,如下所示

+----------+------------+
| 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          |
+--------+-------+------------+

我认为这是一个
左连接

select r.parent, r.child, p.attachment
from relation r left join
     parent p
     on p.material = r.child;
这将生成
NULL
,而不是
“Child NA”


是一个数字小提琴。

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

   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);

谢谢@Gordon。这很有效。但是当
child
表中有额外的行时,说
112401
。这个查询也会返回这个结果。但我只想要那些存在于
parent
table@Avinash . . . 这回答了您在这里提出的问题。如果你有不同的问题,问一个新问题。提供样本数据、预期结果和清晰的解释。