Resumo: neste tutorial, aprenderá como usar SQLite CROSS JOIN
para combinar dois ou mais conjuntos de resultados de múltiplas tabelas.
Introdução ao SQLite CROSS JOIN clause
Se usar um LEFT JOIN
INNER JOIN
, ou CROSS JOIN
sem a cláusula ON
ou USING
, 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.
p>Suponha, temos duas tabelas A e B. As seguintes afirmações fazem a junção cruzada e produzem um produto cartesiano das linhas das tabelas A e B.
Code language: SQL (Structured Query Language) (sql)SELECT *FROM A JOIN B;
Code language: SQL (Structured Query Language) (sql)SELECT *FROM AINNER JOIN B;
Code language: SQL (Structured Query Language) (sql)SELECT *FROM ACROSS JOIN B;
Code language: SQL (Structured Query Language) (sql)SELECT * FROM A, B;
Suponha, a tabela A tem N linhas e a tabela B tem M linhas, o CROSS JOIN
destas duas tabelas produzirá um conjunto de resultados que contém NxM
linhas.
Imagine que se tiver a terceira tabela C com K
linhas, o resultado da cláusula CROSS JOIN
destas três tabelas conterá NxMxK
linhas, que podem ser muito grandes. Portanto, deve ter muito cuidado ao utilizar a cláusula CROSS JOIN
cláusula.
Utiliza-se a cláusula INNER JOIN
e LEFT JOIN
cláusulas mais frequentemente do que a cláusula CROSS JOIN
. No entanto, encontrará a cláusula CROSS JOIN
muito útil em alguns casos.
Por exemplo, quando quiser ter uma matriz que tenha duas dimensões completamente preenchidas com dados como membros e dados de datas numa base de dados de membros. Pretende verificar os assistentes dos membros para todas as datas relevantes. Neste caso, poderá utilizar a cláusula CROSS JOIN
como a seguinte declaração:
Code language: SQL (Structured Query Language) (sql)SELECT name, date FROM membersCROSS JOIN dates;
SQLite CROSS JOIN clause example
As seguintes declarações criam o ranks
e suits
tabelas que armazenam as classificações e fatos para um baralho de cartas e inserem os dados completos nestas duas tabelas.
Code language: SQL (Structured Query Language) (sql)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');
A seguinte declaração utiliza a cláusula CROSS JOIN
para devolver os dados completos do baralho de cartas:
Code language: SQL (Structured Query Language) (sql)SELECT rank, suit FROM ranks CROSS JOIN suitsORDER BY suit;
rank | |
---|---|
2 | Clubs |
3 | Clubs |
4 | Clubs |
5 | Clubs |
6 | |
Clubs | |
8 | Clubs |
9 | Clubs |
10 | |
J | Clubs |
Q | Clubs |
K | Clubs |
A | Clubs |
2 | Diamonds |
3 | Diamonds |
4 | Diamonds |
5 | Diamonds |
6 | Diamonds |
7 | Diamonds |
8 | Diamonds |
Diamonds | |
10 | Diamonds |
J | Diamonds |
Q | Diamonds |
K | Diamonds |
A | Diamonds |
2 | Hearts |
3 | Hearts |
4 | Hearts |
5 | Hearts |
6 | Hearts |
Hearts | |
8 | Hearts |
9 | Hearts |
10 | Hearts |
J | Hearts |
Q | |
K | Hearts |
A | Hearts |
Spades | |
3 | Spades |
4 | Spades |
5 | Spades |
6 | Spades |
7 | Spades |
8 | |
10 | Spades |
J | Spades |
Q | Spades | Spades |
A | Spades |
neste tutorial, aprendeu como utilizar a cláusula SQLite CROSS JOIN para produzir um produto cartesiano de múltiplas tabelas envolvidas no join.