概要 :このチュートリアルでは、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句を使用して、結合に関係する複数のテーブルのデカルト積を生成する方法を学習しました。