概要: このチュートリアルでは、SQLite の CROSS JOIN を使用して、複数のテーブルからの 2 つ以上の結果セットを結合する方法を学びます。
Introduction to SQLite CROSS JOIN clause
もし、LEFT JOININNER JOINCROSS JOINONUSINGCROSS JOIN を使用すると、SQLite は関係するテーブルの Cartesian Product を生成します。
例えば、2つのテーブルAとBがあるとします。以下のステートメントは、クロスジョインを実行し、AとBのテーブルの行のカルテシアンプロダクトを生成します。
Code language: SQL (Structured Query Language) (sql)SELECT *FROM A JOIN B;
Code language: SQL (Structured Query Language) (sql)SELECT *FROM AINNER JOIN B;
Code language: SQL (Structured Query Language) (sql)SELECT *FROM ACROSS JOIN B;
Code language: SQL (Structured Query Language) (sql)SELECT * FROM A, B;
仮に。 AテーブルがN行、BテーブルがM行の場合、これら2つのテーブルのCROSS JOINNxM行を含む結果セットを生成します。
3番目のテーブルCにKCROSS JOINNxMxK行が含まれ、非常に巨大なものになる可能性があることを想像してみてください。
INNER JOINLEFT JOINCROSS JOINCROSS JOIN句が非常に役立つ場合もあります。
例えば、会員データベースの会員や日付データのように、完全にデータで埋め尽くされた2つの次元を持つマトリックスを持ちたい場合。 会員の出席者を、関連するすべての日付でチェックしたいとします。 この場合、CROSS JOIN句を以下のように記述します。
Code language: SQL (Structured Query Language) (sql)SELECT name, date FROM membersCROSS JOIN dates;
SQLite CROSS JOIN句の例
以下のステートメントは、カードのデッキのランクとスーツを格納するrankssuitsのテーブルを作成し、これら2つのテーブルに完全なデータを挿入します。
Code language: SQL (Structured Query Language) (sql)CREATE TABLE ranks ( rank TEXT NOT NULL);CREATE TABLE suits ( suit TEXT NOT NULL);INSERT INTO ranks(rank) VALUES('2'),('3'),('4'),('5'),('6'),('7'),('8'),('9'),('10'),('J'),('Q'),('K'),('A');INSERT INTO suits(suit) VALUES('Clubs'),('Diamonds'),('Hearts'),('Spades');
次のステートメントでは、CROSS JOIN句を使用して、カードのデッキの完全なデータを返します。
Code language: SQL (Structured Query Language) (sql)SELECT rank, suit FROM ranks CROSS JOIN suitsORDER BY suit;
| ランク | スート | |
|---|---|---|
| 2 | クラブ | |
| 3 | クラブ | |
| 4 | クラブ | |
| 5 | クラブ | |
| 6 | クラブ | |
| 7 | クラブ | |
| 8 | クラブ | |
| 9 | クラブ | |
| 10 | クラブ | |
| クラブ | ||
| Q | クラブ | |
| K | クラブ | |
| A | クラブ | |
| 2 | 2 | ダイアモンド |
| 3 | ダイアモンド | |
| 4 | ダイアモンド | |
| 5 | ダイアモンド | |
| ダイアモンド | 6 | ダイヤモンド |
| 7 | ダイヤモンド | |
| 8 | ダイヤモンド | |
| 9 | ダイヤモンド | |
| 10 | ダイアモンド | |
| J | ダイアモンド | |
| Q | ダイアモンド | |
| K | ダイアモンド | ダイヤモンド |
| A | ダイヤモンド | |
| 2 | ハート | |
| 3 | ハート | |
| 4 | ハート | |
| 5 | ハート | |
| 6 | ハート | |
| ハート | ||
| 8 | Hearts | |
| 9 | Hearts | |
| 10 | Hearts | |
| J | Hearts | ハーツ |
| Q | ハーツ | |
| K | ハーツ | |
| A | ハーツ | |
| 2 | スペード | |
| 3 | スペード | |
| 4 | スペード | |
| 5 | スペード | |
| スペード | 6 | スペード |
| スペード | ||
| スペード | ||
| スペード | ||
| 10 | スペード | |
| J | スペード | |
| スペード | ||
| スペード | ||
| A | スペード |
このチュートリアルでは、SQLの使用方法を学びました。 SQLiteのCROSS JOIN句を使用して、結合した複数のテーブルのデカルト積を生成する方法を学びました。
- このチュートリアルは役に立ちましたか?
- YesNo