今回は内部結合と外部結合について勉強したのでまとめてみました
以下は記述なんですけど、間違っている場合は教えてください。
まず、2つテーブルには共通のカラムが必要になります。
goodslist batch_number
内部結合(INNER JOIN)
共通のカラムを軸に情報を表示します。
SQL文:
SELECT * FROM テーブル名1 INNER JOIN テーブル名2 ON テーブル名1.共通のカラム名 = テーブル名2. 共通のカラム名;
※ INNERはなくでも大丈夫
SQL文:
qiita.rb
SELECT * FROM テーブル名1 INNER JOIN テーブル名2 ON テーブル名1.共通のカラム名 = テーブル名2. 共通のカラム名;
そしてこの実例には
qiita.rb
SELECT * FROM goodslist INNER JOIN batch_number ON goodslist.id = batch_number.goods_id;
となります。
更に絞りたい時の場合は「*」を「テーブル名.カラム名」一つずつ(示したいカラム)に替わります。
qiita.rb
SELECT
batch_number.id ,
goodslist.id ,
goodslist.name ,
batch_number.batch_number ,
batch_number.quantity ,
batch_number.enterdate ,
batch_number.order_number
FROM goodslist
INNER JOIN batch_number
ON goodslist.id = batch_number.goods_id
外部結合(OUTER JOIN)
テーブル側を軸に情報を表示します。
「LEFT JOIN」と「RIGHT JOIN」
LEFTは左の意味である、つまりLEFT JOINを使うとFROMで指定した側のテーブルを軸に情報を表示します。
右の意味であるRIGHT JOINを使うとJOINで指定した側のテーブルを軸に情報を表示します。
SQL文:
qiita.rb
SELECT * FROM テーブル名1 LIFT JOIN テーブル名2 ON テーブル名1.共通のカラム名 = テーブル名2. 共通のカラム名;
SELECT * FROM テーブル名1 RIGHT JOIN テーブル名2 ON テーブル名1.共通のカラム名 = テーブル名2. 共通のカラム名;
実行すると下図となります。
qiita.rb
SELECT * FROM goodslist LEFT JOIN batch_number ON goodslist.id = batch_number.goods_id;
qiita.rb
SELECT * FROM goodslist RIGHT JOIN batch_number ON goodslist.id = batch_number.goods_id;