Curso de SQL en MySQL, Capítulo 11: En este capítulo aprenderás a realizar consultas multitablas en MySQL con INNER JOIN, LEFT JOIN. RIGHT JOIN y UNION para así construir consultas avanzadas.
Base de Datos (tiendita): https://mega.nz/#!yYFnjKZZ!pztvF5iMmXsgjo6_lhP5GmQ2kSqF1yu6GRC3if83R8Q
Consultas Multitabla
Es posible seleccionar datos de diferentes tablas mediante una solo consulta, esto se realiza con la sentencia SELECT
Consultando 2 tablas a la vez:
SELECT * FROM tabla1, tabla2;
Con la consulta anterior mostrara todos los datos de la tabla1 y tabla2.
Consultando 2 tablas indicando mediante que campos se unirán y mostrara solo los registros que coincidan:
SELECT * FROM tabla1, tabla2 WHERE campo1=campo2;
INNER JOIN
La sentencia INNER JOIN selecciona todas las filas de las tablas indicadas y solo si los registros de las tablas cumplen las condiciones especificadas en la cláusula ON.
La consulta con INNER JOIN seria de la siguiente manera:
-- Utilizando INNER JOIN SELECT * FROM tabla1 AS t1 INNER JOIN tabla2 AS t2 ON t1.campo=t2.campo; -- Utilizando solo JOIN SELECT * FROM tabla1 AS t1 INNER JOIN tabla2 AS t2 ON t1.campo=t2.campo; -- Abmas dan el mismo resultado
LEFT JOIN
La cláusula LEFT JOIN devuelve todas los registros de la tabla de la izquierda (tabla1), con las correspondientes de la tabla de la derecha (tabla2). El resultado es NULL en la parte de la derecha cuando no hay registros que correspondan con la condición.
SELECT * FROM tabla1 AS t1 LEFT JOIN tabla2 AS t2 ON t1.campo=t2.campo;
RIGHT JOIN
La instrucción RIGHT JOIN devuelve todas los registros de la tabla de la derecha (tabla2), y todas los registros correspondientes de la tabla de la izquierda (tabla1). El resultado será NULL cuando no haya registros correspondientes de la tabla de la izquierda.
SELECT * FROM tabla1 AS t1 RIGHT JOIN tabla2 AS t2 ON t1.campo=t2.campo;
UNION
El operador UNION se utiliza cuando se necesita combinar los resultados de dos consultas diferentes. Los resultados no tienen que tener ninguna vinculación entre ellos; se quiere mostrar todos los resultados juntos.
SELECT * FROM tabla1 UNION SELECT * FROM tabla2;
Tutorial en Vídeo: