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.