読者です 読者をやめる 読者になる 読者になる

Life is Really Short, Have Your Life!!

ござ先輩の主に技術的なメモ

よく分かるFROM句の仕組み

例えば、こういう顧客テーブルを全件取得するSQLがあります。

SELECT
     *
FROM
    customers

上記のSQLはこうやっても一緒です。

SELECT
     *
FROM
    (SELECT * FROM customers)

テーブルCustomersって要は全件取得した結果集合をFROMに設定してるんだよねっていうこと。

JOINでも同じ。Salesテーブルは外部キーとして、CustomersテーブルのIDを持っている。カラム名はcustomer_id。

SELECT
     *
FROM
    customers as c
    join sales as s on s.customer_id = c.id

以下のように書いても一緒です。

SELECT
     *
FROM
     (SELECT * FROM customers) as c
     join  (SELECT * FROM sales) as s on s.customer_id = c.id

JOINの対象にサブクエリを仕込めるっていうのは、こいつが一番わかり易い気がするなと新人トレーニングで感じた。

SQLが集合の関係演算を行うものであるというのは、FROM句を細かく見ていくとよくわかる。逆に言うと、FROM句が書けない場合はSELECTすることは絶対にできないなー