Oracle Database テーブル同士を外部結合して抽出する
- 作成日 2022.09.17
- Oracle Database
- Oracle Database
Oracle Databaseで、テーブル同士を外部結合して抽出する手順を記述してます。
環境
- OS windows11 home
- Oracle Database 21c Express Edition
- SQL Developer 21.2.1.204
手順
テーブル同士を外部結合しして抽出するには、「LEFT OUTER JOIN」「RIGHT OUTER JOIN」「FULL OUTER JOIN」を使用します。
※「FULL OUTER JOIN」以外は「OUTER」は省略できます。
SELECT * FROM テーブル1
LEFT JOIN テーブル2 ON テーブル1.列名 = テーブル2.列名;
or
SELECT * FROM テーブル1
RIGHT OUTER JOIN テーブル2 ON テーブル1.列名 = テーブル2.列名;
or
SELECT * FROM テーブル1
FULL OUTER JOIN テーブル2 ON テーブル1.列名 = テーブル2.列名;
実際に、以下の2つのテーブル「ORDERTBL」と「ORDERDETAILTBL」を内部結合してみます。
テーブル「ORDERTBL」
テーブル「ORDERDETAILTBL」
LEFT JOIN
左側のテーブル(ORDERTBL)全件と、条件が一致した右側のテーブル(ORDERDETAILTBL)のデータが抽出されます。
SELECT * FROM ORDERTBL
LEFT JOIN ORDERDETAILTBL ON ORDERTBL.DETAIL_ID = ORDERDETAILTBL.ORDER_DETAIL_ID;
実行結果を見ると、外部結合できていることが確認できます。
テーブルを逆にして実行すると、左側のテーブル(ORDERDETAILTBL)全件取得されます。
SELECT * FROM ORDERDETAILTBL
LEFT JOIN ORDERTBL ON ORDERTBL.DETAIL_ID = ORDERDETAILTBL.ORDER_DETAIL_ID;
実行結果
RIGHT JOIN
右側のテーブル(ORDERTBL)全件と、条件が一致した左側のテーブル(ORDERDETAILTBL)のデータが抽出されます。
SELECT * FROM ORDERTBL
RIGHT JOIN ORDERDETAILTBL ON ORDERTBL.DETAIL_ID = ORDERDETAILTBL.ORDER_DETAIL_ID;
実行結果
実行するテーブルを逆にしてみます。
SELECT * FROM ORDERDETAILTBL
RIGHT JOIN ORDERTBL ON ORDERTBL.DETAIL_ID = ORDERDETAILTBL.ORDER_DETAIL_ID;
実行結果
FULL OUTER JOIN
両テーブルを、データが一致しなかったものも含め結合します。
SELECT * FROM ORDERTBL
FULL OUTER JOIN ORDERDETAILTBL ON ORDERTBL.DETAIL_ID = ORDERDETAILTBL.ORDER_DETAIL_ID;
実行結果
-
前の記事
GAS googleドライブ内のフォルダの親フォルダを取得する 2022.09.17
-
次の記事
javascript Map内の最大値・最小値を取得する 2022.09.17
コメントを書く