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.