MySQL CROSS JOIN se utiliza para combinar todas las posibilidades de dos o más tablas y devuelve el resultado que contiene cada fila de todas las tablas contribuyentes. La UNIÓN CRUZADA también se conoce como UNIÓN CARTESIANA, que proporciona el producto cartesiano de todas las tablas asociadas. El producto cartesiano se puede explicar como todas las filas presentes en la primera tabla multiplicadas por todas las filas presentes en la segunda tabla. Es similar a la unión interna, donde la condición de unión no está disponible con esta cláusula.
Podemos entenderlo con la siguiente representación visual donde CROSS JOIN devuelve todos los registros de la tabla1 y la tabla2, y cada fila es la combinación de filas de ambas tablas.
Sintaxis de unión cruzada de MySQL
La palabra clave CROSS JOIN siempre se usa con la instrucción SELECT y debe escribirse después de la cláusula FROM. La siguiente sintaxis recupera todos los registros de ambas tablas de unión:
herencia java
SELECT column-lists FROM table1 CROSS JOIN table2;
En la sintaxis anterior, las listas de columnas son el nombre de la columna o campo que desea devolver y tabla1 y tabla2 son el nombre de la tabla de la que obtiene los registros.
Ejemplo de unión cruzada de MySQL
Tomemos algunos ejemplos para comprender el funcionamiento de la cláusula de unión izquierda o de unión externa izquierda:
Cláusula CROSS JOIN para unir dos tablas
Aquí vamos a crear dos tablas. 'clientes' y 'contactos' que contiene los siguientes datos:
Tabla: clientes
Tabla: contactos
conversión de cadena java a número entero
Para recuperar todos los registros de ambas tablas, ejecute la siguiente consulta:
SELECT * FROM customers CROSS JOIN contacts;
Después de la ejecución exitosa de la consulta, dará el siguiente resultado:
Cuando se ejecute la instrucción CROSS JOIN, observará que muestra 42 filas. Significa que siete filas de la tabla de clientes se multiplican por las seis filas de la tabla de contactos.
NOTA: Para evitar el resultado de columnas repetidas dos veces, se recomienda utilizar nombres de columnas individuales en lugar de la instrucción SELECT *.
Problema de columnas ambiguas en MySQL CROSS JOIN
A veces, necesitamos recuperar los registros de las columnas seleccionadas de varias tablas. Estas tablas pueden contener algunos nombres de columnas similares. En ese caso, la declaración CROSS JOIN de MySQL arroja un error: el nombre de la columna es ambiguo. Significa que el nombre de la columna está presente en ambas tablas y MySQL se confunde acerca de qué columna desea mostrar. Los siguientes ejemplos lo explican más claramente:
SELECT customer_id, cust_name, income, order_id, price FROM customer CROSS JOIN orders;
El CROSS JOIN anterior arroja un error como se muestra en la siguiente imagen:
Este problema se puede resolver utilizando el nombre de la tabla antes del nombre de la columna. La consulta anterior se puede reescribir como:
SELECT customer.customer_id, customer.cust_name, customer.income, orders.order_id, orders.price FROM customer CROSS JOIN orders;
Después de ejecutar la consulta anterior, obtendremos el siguiente resultado:
dormir en js
UNIRSE A LA IZQUIERDA con la cláusula WHERE
La cláusula WHERE se utiliza para devolver el filtrar resultado de la tabla. El siguiente ejemplo ilustra esto con la cláusula CROSS JOIN:
SELECT customers.customer_id, customers.cust_name, customers.income, orders.order_id, orders.price FROM customers CROSS JOIN orders USING(customer_id) WHERE price>1500 AND price<5000; < pre> <p>This statement gives the below result:</p> <img src="//techcodeview.com/img/mysql-tutorial/98/mysql-cross-join-7.webp" alt="MySQL CROSS JOIN"> <h3>MySQL CROSS JOIN Multiple Tables</h3> <p>We have already created two tables named ' <strong>customers'</strong> and ' <strong>orders'</strong> . Let us create one more table and name it as ' <strong>contacts' that contains the following data:</strong> </p> <img src="//techcodeview.com/img/mysql-tutorial/98/mysql-cross-join-8.webp" alt="MySQL CROSS JOIN"> <p>Here, we are going to explain CROSS JOIN with LEFT JOIN using three tables. Execute the following statement to join the three table customers, orders, and contacts. In this statement, first CROSS JOIN completed between orders and contacts, and then LEFT JOIN executes according to the specified condition.</p> <pre> SELECT * FROM customer LEFT JOIN(orders CROSS JOIN contacts) ON customer.customer_id=contact_id ORDER BY income; </pre> <p>After successful execution of the above query, it will give the following output:</p> <img src="//techcodeview.com/img/mysql-tutorial/98/mysql-cross-join-9.webp" alt="MySQL CROSS JOIN"> <hr></5000;>
Después de la ejecución exitosa de la consulta anterior, obtendrá el siguiente resultado:
5000;>