RIGHT (OUTER) JOIN (右外部結合)を使ってデータを取得する

RIGHT (OUTER) JOIN (右外部結合)を使ってデータを取得する

前回は 「 LEFT (OUTER) JOIN (左外部結合)を使ってデータを取得する 」 で、LEFT JOIN を使って、二つのテーブルを結合してデータを取得しました。

OUTER JOIN (外部結合) には LEFT, RIGHT, FULL の 3 種類があります。


今回は RIGHT (OUTER) JOIN (右外部結合) を使って、二つのテーブルを結合して値を取得してみましょう。 OUTER は省略できるので、省略します。

まだ生成していなければ、こちら のスクリプトを実行して、Student・Test・TestResult テーブルを生成しておいてください。

RIGHT JOIN (右外部結合)

RIGHT JOIN を使って、 [左テーブル] RIGHT JOIN [右テーブル] ON ... のように結合すると、[右テーブル] の全レコードと、ON で指定した条件がマッチする [左テーブル] のレコードが取得されます。

JOIN (結合)の基本と種類について 3


RIGHT JOIN を使って、前回と同様に、TestResult テーブルの TestID = 2 の全レコードと、 StudentID がマッチする Student の名前を取得するクエリーは以下の通りです。

SELECT  TR.*,
        S.FirstName,
        S.LastName
FROM    Student AS S
            RIGHT JOIN TestResult AS TR
                ON S.StudentID = TR.StudentID
WHERE   TR.TestID = 2;

[ 実行結果 ]
RIGHT (OUTER) JOIN (右外部結合)を使ってデータを取得する 1

前回の LEFT JOIN の実行結果と全く同じ結果が得られましたね。、

[ LEFT JOIN の実行結果 ]
OUTER JOIN (外部結合)を使ってデータを取得する 3


RIGHT JOIN は左右が反対なだけで、動きは LEFT JOIN と同じです。 ですので、左右のテーブルを入れ替えて LEFT JOIN を使うと、全く同じ結果が得られます。

左右のテーブルを入れ替えないと、全レコードがかえってくるテーブルが違うので、結果は違ってきます。

複数のテーブルを結合するときに混乱する可能性があるので、私は常に LEFT JOIN を使うようにしています。


次は、FULL (OUTER) JOIN (完全外部結合)を使ってデータを取得してみましょう。

© 2010-2024 SQL Server 入門