DevPath · Aprende a programar ESPTEN

JOINs: combinar tablas

Combinar tablas con INNER JOIN

Recordatorio: datos repartidos en tablas

En el módulo anterior viste el diseño relacional: la información se reparte en varias tablas y cada producto referencia su categoría mediante una clave foránea (categoria_id apunta a categorias.id) en lugar de repetir el nombre. Aquí partimos de ese diseño ya hecho y nos centramos en la pregunta que queda pendiente: ¿cómo volvemos a juntar esas tablas para consultarlas?

productos.id nombre categoria_id categorias.id nombre
1 Teclado 1 1 Perifericos
3 Monitor 2 2 Pantallas

Volver a unir: INNER JOIN

Para ver el nombre de la categoría junto al del producto hay que combinar ambas tablas. Eso es un JOIN: emparejas filas de una tabla con filas de otra según una condición.

SELECT productos.nombre, categorias.nombre
FROM productos
INNER JOIN categorias ON productos.categoria_id = categorias.id;

El INNER JOIN solo conserva las filas que tienen pareja en ambos lados. Un producto con categoria_id que no existe en categorias (o NULL) desaparece del resultado. Lo veremos con detalle en la siguiente lección.

Como dos tablas pueden tener columnas con el mismo nombre (aquí, nombre en ambas), conviene cualificarlas con el nombre de la tabla: productos.nombre, categorias.nombre.

Ejemplos

INNER JOIN: producto y nombre de su categoría

-- Solo aparecen los productos que tienen categoría asignada.
SELECT productos.nombre, categorias.nombre AS categoria
FROM productos
INNER JOIN categorias ON productos.categoria_id = categorias.id;
Pon esto en práctica

DevPath es un curso práctico: aquí lees la teoría; en la app la pones en práctica con ejercicios que se ejecutan de verdad, sin conexión.

Empezar gratis en la app →
LEFT JOIN: conservar la tabla izquierda →