English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

¿Cómo usar JOIN MySQL sin condición ON?

Podemos usar 'conexión cruzada' sin condiciones. La conexión cruzada proporciona resultados en forma de producto cartesiano. Por ejemplo, si una tabla tiene3registros, mientras que la otra tabla tiene2registros, luego el primer registro se emparejará con todos los registros de la segunda tabla. Luego, se repetirá el mismo proceso para el segundo registro, y así sucesivamente.

Ejemplo de conexión cruzada

Crear la primera tabla

mysql> CREATE table ForeignTableDemo
   - > (
   - > Id int,
   - > Name varchar(100),
   - > FK int
   - > );

Crear la segunda tabla

mysql> CREATE table PrimaryTableDemo
   - > (
   - > FK int,
   - > Address varchar(100),
   - > clave primaria(FK)
   - > );

Añadir restricción

mysql> ALTER table ForeignTableDemo add constraint FKConst foreign key(FK) references PrimaryTableDemo(FK);
Registros: 0 Duplicados: 0 Avisos: 0

Añadir registros a la segunda tabla.

mysql> INSERT INTO PrimaryTableDemo VALUES (1,'Estados Unidos');
mysql> INSERT INTO PrimaryTableDemo VALUES (2,'Reino Unido');
mysql> INSERT INTO PrimaryTableDemo VALUES (3,'Desconocido');

Mostrar registros de la segunda tabla.

mysql> SELECT * de PrimaryTableDemo;

A continuación, se muestra el resultado de la consulta anterior.

+----+---------+
| FK | Dirección |
+----+---------+
|  1 | Estados Unidos |
|  2 | Reino Unido |
|  3 | Desconocido |
+----+---------+
3 rows in set (0.00 sec)

Añadir registros a la primera tabla.

mysql> INSERT INTO ForeignTableDemo VALUES (1,'John',1);
mysql> INSERT INTO ForeignTableDemo VALUES (2,'Bob',2);

Se utilizan comandos SELECT para mostrar los registros.

mysql> SELECT * de ForeignTableDemo;

A continuación, se muestra el resultado.

+------+------+------+
| Id | Nombre | FK |
+------+------+------+
|    1 | John |    1 |
|    2 | Bob |    2 |
+------+------+------+
2 rows in set (0.00 sec)

Hemos aplicado restricciones de clave foránea en todas las tablas. Ahora, veamos la sintaxis del 'cruce de tablas' sin usar ON.

mysql> SELECT ForeignTableDemo.Id, ForeignTableDemo.Name, PrimaryTableDemo.Address
   - > de ForeignTableDemo
   - > unión cruzada PrimaryTableDemo;

Este es el resultado.

+------+------+---------+
| Id | Nombre | Dirección |
+------+------+---------+
|    1 | John | Estados Unidos |
|    2 | Bob | Estados Unidos |
|    1 | John | Reino Unido |
|    2 | Bob | Reino Unido |
|    1 | John | Desconocido |
|    2 | Bob | Desconocido |
+------+------+---------+
6 rows in set (0.00 sec)