0

親と 2 つの子の 3 つのテーブルがあり、2 つの子は ID 列を使用して親との FK 関係を持ち、親行ごとに 0 から n の子行が存在する場合があります。3 つのテーブルすべてから 1 つの結果セットのデータを生成するクエリを作成する必要があります。

子行が存在しない場合、そのテーブルのフィールドは空白にする必要があります。それ以外の場合、これらのフィールドには適切な値が必要です。

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.ID に対して子行 B または子行 C が存在する A から行を返したいと考えています。B の行が存在しない場合、B.DataB1 と B.DataB2 は null または空白である必要があり、C の行が存在しない場合も同様です。

4

1 に答える 1

0

外部結合を使用する必要があります。

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 結合の詳細な説明については、http: //www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.htmlを参照してください。

于 2012-12-11T11:01:27.633 に答える