Shrnutí :v tomto tutoriálu se naučíte používat SQLite CROSS JOIN zkombinovat dvě nebo více sad výsledků z více tabulek.
Úvod do SQLite CROSS JOIN klauzule
Pokud použijete LEFT JOIN , INNER JOIN nebo CROSS JOIN bez ON nebo USING klauzule SQLite vytváří kartézský součin příslušných tabulek. Počet řádků v kartézském součinu je součinem počtu řádků v každé zahrnuté tabulce.
Předpokládejme, že máme dvě tabulky A a B. Následující příkazy provedou křížové spojení a vytvoří kartézský součin řádků z tabulek A 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)
Předpokládejme, že tabulka A má N řádků a tabulka B má M řádků, CROSS JOIN z těchto dvou tabulek vytvoří sadu výsledků, která obsahuje NxM řádky.
Představte si, že pokud máte třetí tabulku C s K řádky, výsledek CROSS JOIN klauzule těchto tří tabulek bude obsahovat NxMxK řádky, které mohou být velmi velké. Proto byste měli být velmi opatrní při používání CROSS JOIN doložka.
Používáte INNER JOIN a LEFT JOIN klauzule častěji než CROSS JOIN doložka. Najdete zde však CROSS JOIN klauzule velmi užitečná v některých případech.
Například, když chcete mít matici, která má dvě dimenze naplněné daty úplně jako členové a data data v členské databázi. Chcete zkontrolovat účastníky členů pro všechna relevantní data. V tomto případě můžete použít CROSS JOIN klauzule jako následující prohlášení:
SELECT name,
date
FROM members
CROSS JOIN dates;Code language: SQL (Structured Query Language) (sql) SQLite CROSS JOIN příklad klauzule
Následující příkazy vytvářejí ranks a suits tabulky, které ukládají hodnosti a barvy pro balíček karet a vkládají kompletní data do těchto dvou tabulek.
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)
Následující příkaz používá CROSS JOIN klauzule pro vrácení kompletních dat balíčku karet:
SELECT rank,
suit
FROM ranks
CROSS JOIN
suits
ORDER BY suit;Code language: SQL (Structured Query Language) (sql) | rank | oblek |
|---|---|
| 2 | Kluby |
| 3 | Kluby |
| 4 | Kluby |
| 5 | Kluby |
| 6 | Kluby |
| 7 | Kluby |
| 8 | Kluby |
| 9 | Kluby |
| 10 | Kluby |
| J | Kluby |
| O | Kluby |
| K | Kluby |
| A | Kluby |
| 2 | Diamanty |
| 3 | Diamanty |
| 4 | Diamanty |
| 5 | Diamanty |
| 6 | Diamanty |
| 7 | Diamanty |
| 8 | Diamanty |
| 9 | Diamanty |
| 10 | Diamanty |
| J | Diamanty |
| O | Diamanty |
| K | Diamanty |
| A | Diamanty |
| 2 | Srdce |
| 3 | Srdce |
| 4 | Srdce |
| 5 | Srdce |
| 6 | Srdce |
| 7 | Srdce |
| 8 | Srdce |
| 9 | Srdce |
| 10 | Srdce |
| J | Srdce |
| O | Srdce |
| K | Srdce |
| A | Srdce |
| 2 | Pyly |
| 3 | Pyly |
| 4 | Pyly |
| 5 | Pyly |
| 6 | Pyly |
| 7 | Pyly |
| 8 | Pyly |
| 9 | Pyly |
| 10 | Pyly |
| J | Pyly |
| O | Pyly |
| K | Pyly |
| A | Pyly |
V tomto tutoriálu jste se naučili používat klauzuli SQLite CROSS JOIN k vytvoření kartézského součinu více tabulek zapojených do spojení.