Resumen :en este tutorial, aprenderá a usar SQLite CROSS JOIN
para combinar dos o más conjuntos de resultados de varias tablas.
Introducción a SQLite CROSS JOIN
cláusula
Si usa un LEFT JOIN
, INNER JOIN
, o CROSS JOIN
sin el ON
o USING
cláusula, SQLite produce el producto cartesiano de las tablas involucradas. El número de filas en el producto cartesiano es el producto del número de filas en cada tabla involucrada.
Supongamos que tenemos dos tablas A y B. Las siguientes declaraciones realizan la unión cruzada y producen un producto cartesiano de las filas de las tablas A y 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)
Supongamos que la tabla A tiene N filas y la tabla B tiene M filas, CROSS JOIN
de estas dos tablas producirá un conjunto de resultados que contiene NxM
filas.
Imagina que si tienes la tercera tabla C con K
filas, el resultado de CROSS JOIN
cláusula de estas tres tablas contendrá NxMxK
filas, que pueden ser muy grandes. Por lo tanto, debe tener mucho cuidado al usar CROSS JOIN
cláusula.
Usas el INNER JOIN
y LEFT JOIN
cláusulas con más frecuencia que CROSS JOIN
cláusula. Sin embargo, encontrará el CROSS JOIN
cláusula muy útil en algunos casos.
Por ejemplo, cuando desea tener una matriz que tenga dos dimensiones llenas de datos completamente como datos de miembros y fechas en una base de datos de miembros. Desea verificar los asistentes de los miembros para todas las fechas relevantes. En este caso, puede usar el CROSS JOIN
cláusula como la siguiente declaración:
SELECT name,
date
FROM members
CROSS JOIN dates;
Code language: SQL (Structured Query Language) (sql)
SQLite CROSS JOIN
ejemplo de cláusula
Las siguientes declaraciones crean los ranks
y suits
tablas que almacenan los rangos y palos de una baraja de cartas e insertan los datos completos en estas dos tablas.
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)
La siguiente instrucción utiliza CROSS JOIN
cláusula para devolver una baraja completa de datos de cartas:
SELECT rank,
suit
FROM ranks
CROSS JOIN
suits
ORDER BY suit;
Code language: SQL (Structured Query Language) (sql)
rango | traje |
---|---|
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 |
P | Diamantes |
K | Diamantes |
A | Diamantes |
2 | Corazones |
3 | Corazones |
4 | Corazones |
5 | Corazones |
6 | Corazones |
7 | Corazones |
8 | Corazones |
9 | Corazones |
10 | Corazones |
J | Corazones |
P | Corazones |
K | Corazones |
A | Corazones |
2 | Picas |
3 | Picas |
4 | Picas |
5 | Picas |
6 | Picas |
7 | Picas |
8 | Picas |
9 | Picas |
10 | Picas |
J | Picas |
P | Picas |
K | Picas |
A | Picas |
En este tutorial, aprendió a usar la cláusula CROSS JOIN de SQLite para producir un producto cartesiano de varias tablas involucradas en la combinación.