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 で指定した条件がマッチする [左テーブル] のレコードが取得されます。
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;
[ 実行結果 ]
前回の LEFT JOIN の実行結果と全く同じ結果が得られましたね。、
[ LEFT JOIN の実行結果 ]
RIGHT JOIN は左右が反対なだけで、動きは LEFT JOIN と同じです。 ですので、左右のテーブルを入れ替えて LEFT JOIN を使うと、全く同じ結果が得られます。
左右のテーブルを入れ替えないと、全レコードがかえってくるテーブルが違うので、結果は違ってきます。
複数のテーブルを結合するときに混乱する可能性があるので、私は常に LEFT JOIN を使うようにしています。
次は、FULL (OUTER) JOIN (完全外部結合)を使ってデータを取得してみましょう。