Tipos de Joins en SQL
En SQL, los joins permiten combinar filas de dos o más tablas basadas en una columna relacionada entre ellas. Aquí se describen los tipos más comunes de joins con ejemplos.
1. INNER JOIN
Descripción: Devuelve solo las filas que tienen coincidencias en ambas tablas.
Ejemplo:
SELECT empleados.nombre, departamentos.nombre
FROM empleados
INNER JOIN departamentos ON empleados.departamento_id = departamentos.id;
2. LEFT JOIN (o LEFT OUTER JOIN)
Descripción: Devuelve todas las filas de la tabla de la izquierda y las coincidencias de la tabla de la derecha. Si no hay coincidencia, se devuelve NULL.
Ejemplo:
SELECT empleados.nombre, departamentos.nombre
FROM empleados
LEFT JOIN departamentos ON empleados.departamento_id = departamentos.id;
3. RIGHT JOIN (o RIGHT OUTER JOIN)
Descripción: Devuelve todas las filas de la tabla de la derecha y las coincidencias de la tabla de la izquierda. Si no hay coincidencia, se devuelve NULL.
Ejemplo:
SELECT empleados.nombre, departamentos.nombre
FROM empleados
RIGHT JOIN departamentos ON empleados.departamento_id = departamentos.id;
4. FULL JOIN (o FULL OUTER JOIN)
Descripción: Devuelve todas las filas cuando hay coincidencia en una de las tablas. Si no hay coincidencia, se devuelve NULL en las columnas de la tabla que no coincide.
Ejemplo:
SELECT empleados.nombre, departamentos.nombre
FROM empleados
FULL OUTER JOIN departamentos ON empleados.departamento_id = departamentos.id;
5. CROSS JOIN
Descripción: Devuelve el producto cartesiano de ambas tablas. Cada fila de la primera tabla se combina con todas las filas de la segunda tabla.
Ejemplo:
SELECT empleados.nombre, proyectos.nombre
FROM empleados
CROSS JOIN proyectos;
6. SELF JOIN
Descripción: Es una unión de una tabla consigo misma.
Ejemplo:
SELECT e1.nombre AS Empleado, e2.nombre AS Jefe
FROM empleados e1
INNER JOIN empleados e2 ON e1.jefe_id = e2.id;
Consideraciones
- Asegúrate de que las columnas utilizadas para unir tengan índices para mejorar el rendimiento.
- Usa alias para mejorar la legibilidad de las consultas.
- Verifica los NULLs cuando uses OUTER JOINS.