Saltar al contenido principal
Intermedio
15 min de lectura

JOIN

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 |