概要 :このチュートリアルでは、SQLite CROSS JOINの使用方法を学習します 複数のテーブルからの2つ以上の結果セットを組み合わせる。
SQLite CROSS JOINの紹介 条項
LEFT JOINを使用する場合 、INNER JOIN 、またはCROSS JOIN ONなし またはUSING 節、SQLiteは関連するテーブルのデカルト積を生成します。デカルト積の行数は、関連する各テーブルの行数の積です。
2つのテーブルAとBがあるとします。次のステートメントは、クロス結合を実行し、AテーブルとBテーブルの行のデカルト積を生成します。
SELECT *
FROM A JOIN B;Code language: SQL (Structured Query Language) (sql) SELECT *
FROM A
INNER JOIN B;Code language: SQL (Structured Query Language) (sql) SELECT *
FROM A
CROSS JOIN B;Code language: SQL (Structured Query Language) (sql) SELECT *
FROM A, B;Code language: SQL (Structured Query Language) (sql)
AテーブルにN行、BテーブルにM行、CROSS JOINがあるとします。 これら2つのテーブルのうち、NxMを含む結果セットが生成されます。 行。
Kの3番目のテーブルCがあるとします。 行、CROSS JOINの結果 これら3つのテーブルの句には、NxMxKが含まれます。 行、これは非常に巨大な場合があります。したがって、CROSS JOINを使用するときは十分に注意する必要があります 条項。
INNER JOINを使用します およびLEFT JOIN CROSS JOINよりも頻繁に句 句。ただし、CROSS JOINがあります。 場合によっては非常に役立つ句。
たとえば、メンバーシップデータベースのメンバーと日付データのようなデータで完全に満たされた2つのディメンションを持つマトリックスが必要な場合です。関連するすべての日付について、メンバーのアテンダントを確認する必要があります。この場合、CROSS JOINを使用できます 次のステートメントとしての句:
SELECT name,
date
FROM members
CROSS JOIN dates;Code language: SQL (Structured Query Language) (sql) SQLite CROSS JOIN 条項の例
次のステートメントは、ranksを作成します およびsuits カードのデッキのランクとスーツを格納し、これら2つのテーブルに完全なデータを挿入するテーブル。
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');Code language: SQL (Structured Query Language) (sql)
次のステートメントは、CROSS JOINを使用しています カードデータの完全なデッキを返す句:
SELECT rank,
suit
FROM ranks
CROSS JOIN
suits
ORDER BY suit;Code language: SQL (Structured Query Language) (sql) | ランク | スーツ |
|---|---|
| 2 | クラブ |
| 3 | クラブ |
| 4 | クラブ |
| 5 | クラブ |
| 6 | クラブ |
| 7 | クラブ |
| 8 | クラブ |
| 9 | クラブ |
| 10 | クラブ |
| J | クラブ |
| Q | クラブ |
| K | クラブ |
| A | クラブ |
| 2 | ダイヤモンド |
| 3 | ダイヤモンド |
| 4 | ダイヤモンド |
| 5 | ダイヤモンド |
| 6 | ダイヤモンド |
| 7 | ダイヤモンド |
| 8 | ダイヤモンド |
| 9 | ダイヤモンド |
| 10 | ダイヤモンド |
| J | ダイヤモンド |
| Q | ダイヤモンド |
| K | ダイヤモンド |
| A | ダイヤモンド |
| 2 | ハート |
| 3 | ハート |
| 4 | ハート |
| 5 | ハート |
| 6 | ハート |
| 7 | ハート |
| 8 | ハート |
| 9 | ハート |
| 10 | ハート |
| J | ハート |
| Q | ハート |
| K | ハート |
| A | ハート |
| 2 | スペード |
| 3 | スペード |
| 4 | スペード |
| 5 | スペード |
| 6 | スペード |
| 7 | スペード |
| 8 | スペード |
| 9 | スペード |
| 10 | スペード |
| J | スペード |
| Q | スペード |
| K | スペード |
| A | スペード |
このチュートリアルでは、SQLite CROSS JOIN句を使用して、結合に関係する複数のテーブルのデカルト積を生成する方法を学習しました。