SQL查询具有两个子表的父表中的行,如果不存在子行,则使用空值

SQL查询具有两个子表的父表中的行,如果不存在子行,则使用空值,sql,join,Sql,Join,我有三个表,一个父表和两个子表,这两个子表使用ID列与父表具有FK关联,并且每个父行可能有0到n个子行。我需要生成一个查询,该查询将从所有三个表生成一个数据结果集。 如果子行不存在,则该表的字段应为空,否则,这些字段应具有适当的值 Table A Table B Table C -------- ------- ------- ID (PK) A_ID (FK) A_ID (FK) DataA1 DataB

我有三个表,一个父表和两个子表,这两个子表使用ID列与父表具有FK关联,并且每个父行可能有0到n个子行。我需要生成一个查询,该查询将从所有三个表生成一个数据结果集。 如果子行不存在,则该表的字段应为空,否则,这些字段应具有适当的值

Table A     Table B           Table C
--------    -------           -------
ID (PK)     A_ID (FK)         A_ID (FK)
DataA1       DataB1            DataC1
DataA2       DataB2            DataC2
此查询:

select * from A,B,C where A.ID = B.A_ID and A.ID = C.A_ID

将仅返回同时存在子行B和C的A中的行。我想从A返回行,其中A.ID的子行B或子行C存在。如果不存在B的行,则B.DataB1和B.DataB2应为null或空白,同样,如果不存在C的行,则应使用外部联接

select
    A.ID,
    A.DataA1,
    A.DataA2,
    B.A_ID,
    B.DataB1,
    B.DataB2,
    C.A_ID,
    C.DataC1,
    C.DataC2
from A 
left join B
on A.ID = B.A_ID
left join C
on A.ID = C.A_ID
有关SQL连接签出的详细说明,请执行以下操作: