Resumo :neste tutorial, você aprenderá a usar SQLite
CROSS JOIN para combinar dois ou mais conjuntos de resultados de várias tabelas. Introdução ao SQLite CROSS JOIN cláusula
Se você usar um
LEFT JOIN , INNER JOIN , ou CROSS JOIN sem o ON ou USING cláusula, o SQLite produz o produto cartesiano das tabelas envolvidas. O número de linhas no produto cartesiano é o produto do número de linhas em cada uma das tabelas envolvidas. Suponha que temos duas tabelas A e B. As instruções a seguir realizam a junção cruzada e produzem um produto cartesiano das linhas das tabelas A e 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) Suponha que a tabela A tenha N linhas e a tabela B tenha M linhas, o
CROSS JOIN dessas duas tabelas produzirá um conjunto de resultados que contém NxM linhas. Imagine que se você tiver a terceira tabela C com
K linhas, o resultado do CROSS JOIN cláusula dessas três tabelas conterá NxMxK linhas, que podem ser muito grandes. Portanto, você deve ter muito cuidado ao usar o CROSS JOIN cláusula. Você usa o
INNER JOIN e LEFT JOIN cláusulas com mais frequência do que o CROSS JOIN cláusula. No entanto, você encontrará o CROSS JOIN cláusula muito útil em alguns casos. Por exemplo, quando você deseja ter uma matriz que tenha duas dimensões preenchidas com dados completamente como dados de membros e datas em um banco de dados de membros. Você deseja verificar os participantes dos membros para todas as datas relevantes. Neste caso, você pode usar o
CROSS JOIN cláusula como a seguinte declaração:SELECT name,
date
FROM members
CROSS JOIN dates;Code language: SQL (Structured Query Language) (sql) SQLite CROSS JOIN exemplo de cláusula
As instruções a seguir criam as
ranks e suits tabelas que armazenam as graduações e naipes de um baralho de cartas e inserem os dados completos nessas duas tabelas. 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) A instrução a seguir usa o
CROSS JOIN cláusula para retornar um baralho completo de dados de cartas:SELECT rank,
suit
FROM ranks
CROSS JOIN
suits
ORDER BY suit;Code language: SQL (Structured Query Language) (sql) | classificação | terno |
|---|---|
| 2 | Clubes |
| 3 | Clubes |
| 4 | Clubes |
| 5 | Clubes |
| 6 | Clubes |
| 7 | Clubes |
| 8 | Clubes |
| 9 | Clubes |
| 10 | Clubes |
| J | Clubes |
| Q | Clubes |
| K | Clubes |
| A | Clubes |
| 2 | Diamantes |
| 3 | Diamantes |
| 4 | Diamantes |
| 5 | Diamantes |
| 6 | Diamantes |
| 7 | Diamantes |
| 8 | Diamantes |
| 9 | Diamantes |
| 10 | Diamantes |
| J | Diamantes |
| Q | Diamantes |
| K | Diamantes |
| A | Diamantes |
| 2 | Corações |
| 3 | Corações |
| 4 | Corações |
| 5 | Corações |
| 6 | Corações |
| 7 | Corações |
| 8 | Corações |
| 9 | Corações |
| 10 | Corações |
| J | Corações |
| Q | Corações |
| K | Corações |
| A | Corações |
| 2 | Espadas |
| 3 | Espadas |
| 4 | Espadas |
| 5 | Espadas |
| 6 | Espadas |
| 7 | Espadas |
| 8 | Espadas |
| 9 | Espadas |
| 10 | Espadas |
| J | Espadas |
| Q | Espadas |
| K | Espadas |
| A | Espadas |
Neste tutorial, você aprendeu como usar a cláusula SQLite CROSS JOIN para produzir um produto cartesiano de várias tabelas envolvidas na junção.