¡Hola, bienvenidos y bienvenidas! Dando continuidad al curso MySQL 8, hoy veremos lo que son las consultas JOIN MySQL.
En clases anteriores vimos cómo realizar consultas SQL simples para obtener datos de una sola tabla. Sin embargo, en muchas ocasiones existe la necesidad de obtener información más detallada de dos o más tablas.
¡Empecemos!
¿Qué son las sentencias JOIN?
Las sentencias JOINs permiten combinar filas de dos o más tablas en base a un campo en común que tienen entre ellas, basándose en una relación establecida entre ellas a través de claves primarias y claves foráneas. Estas sentencias permiten obtener información relacionada de varias tablas y presentarla en un resultado conjunto.
Los tipos de JOINs que existen y soportan una base de datos MySQL son las siguientes: INNER JOIN, LEFT JOIN, RIGHT JOIN.
INNER JOIN
La sentencia INNER JOIN devuelve solo los registros que tienen coincidencias en ambas tablas. Es decir, solo muestra los registros que tienen valores correspondientes en ambas tablas según la condición especificada.
La sintaxis de una Consulta INNER JOIN es la siguiente:
SELECT listaColumnas
FROM tabla1
INNER JOIN tabla2
ON tabla1.nombreColumna=table2.nombreColumna;
A continuación veremos algunos ejemplos:
Quiero obtener todos los datos solo de los clientes que tienen sus mascotas registradas.
SELECT * FROM clinica_veterinaria.clientes INNER JOIN clinica_veterinaria.mascotas ON clinica_veterinaria.clientes.id = clinica_veterinaria.mascotas.cliente_id;
En este caso, el campo “id” de la tabla “Clientes” hace referencia al campo “cliente_id”que coincide en la tabla “Mascotas”.
Veamos otro ejemplo, quiero obtener a todos los clientes cuya mascota es un perro.
SELECT * FROM clinica_veterinaria.clientes INNER JOIN clinica_veterinaria.mascotas
ON clinica_veterinaria.clientes.id = clinica_veterinaria.mascotas.cliente_id
WHERE clinica_veterinaria.mascotas.tipo = 'Perro';
LEFT JOIN
La sentencia LEFT JOIN devuelve todos los registros de la tabla de la izquierda y los registros coincidentes de la tabla de la derecha. Si no hay coincidencias, se muestran NULL en los campos de la tabla de la derecha.
La sintaxis de una Consulta LEFT JOIN es la siguiente:
SELECT listaColumnas
FROM tabla1
LEFT JOIN tabla2
ON tabla1.nombreColumna=table2.nombreColumna;
A continuación, veremos algunos ejemplos:
Quiero obtener a todos los clientes y verificar cuales registraron a sus mascotas y que clientes aún faltan por registrar.
SELECT * FROM clinica_veterinaria.clientes LEFT JOIN clinica_veterinaria.mascotas
ON clinica_veterinaria.clientes.id = clinica_veterinaria.mascotas.cliente_id;
Veamos otro ejemplo, quiero obtener a todos los clientes y sus mascotas de la “Zona Rosales”.
SELECT * FROM clinica_veterinaria.clientes LEFT JOIN clinica_veterinaria.mascotas
ON clinica_veterinaria.clientes.id = clinica_veterinaria.mascotas.cliente_id
WHERE clinica_veterinaria.clientes.zona = 'Zona Rosales';
Quiero obtener todas las mascotas registradas y ver si cuentan con un Kardex, para esto tomaremos las tablas “Mascota” y “Kardex”.
SELECT * FROM clinica_veterinaria.mascotas LEFT JOIN clinica_veterinaria.kardexs
ON clinica_veterinaria.mascotas.id = clinica_veterinaria.kardexs.mascota_id;
RIGHT JOIN
La Sentencia RIGHT JOIN es similar al LEFT JOIN, pero muestra todos los registros de la tabla de la derecha y los registros coincidentes de la tabla de la izquierda. Si no hay coincidencias, se muestran NULL en los campos de la tabla de la izquierda.
La sintaxis de una Consulta RIGHT JOIN es la siguiente:
SELECT listaColumnas
FROM tabla1
RIGHT JOIN tabla2
ON tabla1.nombreColumna=table2.nombreColumna;
Para este ejemplo utilizaremos las tablas “Mascotas”, “mascota-servicio” y “Servicios”, quiero obtener todos los servicios que se realizaron por lo menos a una mascota.
SELECT * FROM clinica_veterinaria.mascotas RIGHT JOIN clinica_veterinaria.`mascota-servicio`
ON clinica_veterinaria.mascotas.id = clinica_veterinaria.`mascota-servicio`.mascota_id
RIGHT JOIN clinica_veterinaria.servicios
ON clinica_veterinaria.servicios.id = clinica_veterinaria.`mascota-servicio`.servicio_id;
Las sentencias JOIN son muy útiles para obtener información relacionada y compleja al trabajar con bases de datos que tienen datos dispersos en varias tablas. Si tienes alguna duda déjanos un comentario y con gusto te responderemos.
Desarrollador de software Backend Developer, experto en Laravel Framework, PHP, JavaScript y MySQL. Creador de contenidos de emprendimiento y desarrollo de software.