4

SQL Server に次の 2 つのテーブルのようなものがあります。

Table1
MainID Descrip
     1 tree
     2 dog
     3 blah
     4 etc

Table2
SubID MainID SubDescrip
    1      2 rover
    2      2 fido

MainID が一致する場合、Table1 と Table2 からすべて選択できるようにしたいと考えています。

私の望ましい出力は次のとおりです。

MainID Descrip SubID SubDescrip
     1 tree     NULL       NULL
     2 dog      NULL       NULL
     2 dog         1      rover
     2 dog         2       fido
     3 blah     NULL       NULL
     4 etc      NULL       NULL

外部結合を使用して目的の出力の 2 行目を除くすべてを取得できますが、2 行目も取得するにはどうすればよいですか?

言い換えれば、これは:

SELECT m.MainID, m.Descrip, s.SubID, s.SubDescrip
FROM Table1 m LEFT OUTER JOIN
     Table2 s ON m.MainID = s.MainID
ORDER BY m.MainID, s.SubID

私にこれを与える:

MainID Descrip SubID SubDescrip
     1 tree     NULL       NULL
     2 dog         1      rover
     2 dog         2       fido
     3 blah     NULL       NULL
     4 etc      NULL       NULL

しかし、私もこれが欲しいです:

 2 dog      NULL       NULL
4

2 に答える 2

6

使用するUNION

SELECT  m.MainID, 
        m.Descrip, 
        s.SubID, 
        s.SubDescrip
FROM    Table1 m 
        LEFT OUTER JOIN Table2 s 
            ON m.MainID = s.MainID
UNION
SELECT  MainID, 
        Descrip, 
        NULL SubID, 
        NULL SubDescrip
FROM    Table1
ORDER   BY MainID, SubID
于 2013-04-30T08:24:15.877 に答える
2

次のようなものを使用できます。

    SELECT m.MainID, m.Descrip, s.SubID, s.SubDescrip
    FROM Table1 m INNER JOIN
         Table2 s ON m.MainID = s.MainID
    UNION ALL
    SELECT m.MainID, m.Descrip, NULL, NULL
    FROM Table1 m
    ORDER BY MainID, SubID

ラズヴァン

于 2013-04-30T08:24:41.170 に答える