前回、クロス結合について記載するのを忘れてしまっていたので補足しておきます。
そんなに頻繁に使うような結合ではないのですが、ちょっとややこしいので一応。
まず、下記のように科目テーブルと成績テーブルを用意します。
name |
---|
国語 |
算数 |
英語 |
result |
---|
合格 |
不合格 |
これをCROSS JOINを使ってクロス結合すると、下記のようになります。
例:SELECT * FROM 科目テーブル CROSS JOIN 成績テーブル;
name | result |
---|---|
国語 | 合格 |
国語 | 不合格 |
算数 | 合格 |
算数 | 不合格 |
英語 | 合格 |
英語 | 不合格 |
このように、科目テーブルと成績テーブルのすべての組み合わせが出力されます。
また、クロス結合を応用すると、順列と組み合わせを取得することが出来ます。
例:SELECT * FROM 科目テーブル T1 CROSS JOIN 科目テーブル T2 WHERE T1.name <> T2.name;
name | name |
---|---|
国語 | 算数 |
国語 | 英語 |
算数 | 国語 |
算数 | 英語 |
英語 | 国語 |
英語 | 算数 |
例:SELECT * FROM 科目テーブル T1 CROSS JOIN 科目テーブル T2 WHERE T1.name < T2.name;
name | name |
---|---|
国語 | 算数 |
国語 | 英語 |
算数 | 英語 |