Intermedio
15 min de lecturaJOIN
Combina filas de dos o más tablas basándose en una columna relacionada
Los JOINs permiten combinar datos de múltiples tablas en una sola consulta.
Tipos de JOIN
#
INNER JOIN
Devuelve solo las filas que tienen coincidencia en ambas tablas.sql
1SELECT u.nombre, p.titulo2FROM usuarios u3INNER JOIN posts p ON u.id = p.usuario_id;#
LEFT JOIN
Devuelve todas las filas de la tabla izquierda y las coincidencias de la derecha.sql
1SELECT u.nombre, p.titulo2FROM usuarios u3LEFT JOIN posts p ON u.id = p.usuario_id;#
RIGHT JOIN
Devuelve todas las filas de la tabla derecha y las coincidencias de la izquierda.sql
1SELECT u.nombre, p.titulo2FROM usuarios u3RIGHT JOIN posts p ON u.id = p.usuario_id;#
FULL JOIN
Devuelve todas las filas cuando hay coincidencia en alguna de las tablas.sql
1SELECT u.nombre, p.titulo2FROM usuarios u3FULL JOIN posts p ON u.id = p.usuario_id;#
CROSS JOIN
Producto cartesiano de ambas tablas.sql
1SELECT u.nombre, c.nombre2FROM usuarios u3CROSS JOIN colores c;Ejemplo práctico
sql
1SELECT 2 u.nombre,3 COUNT(p.id) as total_posts,4 COALESCE(AVG(p.likes), 0) as promedio_likes5FROM usuarios u6LEFT JOIN posts p ON u.id = p.usuario_id7GROUP BY u.id, u.nombre8ORDER BY total_posts DESC;Sintaxis
Sintaxis
sql
1SELECT columnas2FROM tabla13[INNER|LEFT|RIGHT|FULL] JOIN tabla24ON tabla1.columna = tabla2.columna;Ejemplos
INNER JOIN
Usuarios con sus posts
Ejemplo
sql
1SELECT u.nombre, p.titulo, p.fecha2FROM usuarios u3INNER JOIN posts p ON u.id = p.usuario_id4ORDER BY p.fecha DESC;Resultado:
| nombre | titulo | fecha | |--------|---------------------|------------| | Ana | SQL para principiantes | 2024-01-15 | | Carlos | PostgreSQL Avanzado | 2024-01-14 | | Ana | Tips de optimización | 2024-01-12 |