SQL Intermedio · Lección 2 de 6

Cruzar tablas con JOIN

Ya sabés cómo se organiza la base: hechos al centro y dimensiones alrededor, conectados por claves. Hoy aprendés a unirlas en una sola consulta.

5 minutos

De las claves a los nombres

En la lección anterior viste que la tabla de hechos ventas guarda claves y no nombres: una fila dice que el cliente 5 compró el producto 9 en la sucursal 3. Para analizar, necesitás ver los nombres. Eso es lo que hace JOIN: sigue cada clave hasta su dimensión y trae los datos que necesitás.

Cómo se conectanventas.producto_id→productos.id
ventas.cliente_id→clientes.id
ventas.sucursal_id→sucursales.id

¿Y cómo traigo los nombres?

Con JOIN. Le decís a SQL qué tabla sumar y cómo se conectan las filas con ON. Esta consulta trae cada venta con el nombre de su producto:

SELECT  ventas.fecha,
        productos.nombre
FROM ventas
JOIN productos ON ventas.producto_id = productos.id;

Se lee así: "de ventas, uní productos donde el producto_id de la venta sea igual al id del producto". Para cada venta, SQL busca su producto y arma una fila con datos de las dos tablas.

Cómo empareja un JOIN: cada producto_id de ventas apunta a la fila con ese id en productos, y el resultado trae la fecha, el nombre del producto y la cantidad de cada venta

Cada color es un emparejamiento. Fijate que dos ventas apuntan al mismo producto, y que el aceite, que no está en estas cuatro ventas, no aparece en el resultado.

Alias: nombres cortos para las tablas

Escribir productos.nombre todo el tiempo cansa. Por eso se usan alias: una letra después del nombre de la tabla. Es la misma consulta, más fácil de leer:

SELECT  v.fecha,
        p.nombre
FROM ventas v
JOIN productos p ON v.producto_id = p.id;

El punto indica de qué tabla es cada columna: v.fecha es la fecha de ventas y p.nombre es el nombre de productos. Es importante cuando dos tablas tienen columnas que se llaman igual, como nombre o id.

Ojo con el ON: si te lo olvidás, SQL combina cada venta con todos los productos: 67 ventas × 12 productos = 804 filas sin sentido. Si un resultado de golpe tiene muchísimas más filas de las que esperabas, revisá el ON.

Actividad 1

Detective de ids

Esta es una fila de la tabla ventas. Los números no dicen mucho solos: hay que buscarlos en las otras tablas. Seguí los pedidos y tocá la fila correcta en cada tabla.

idfechacliente_idproducto_idsucursal_idcantidad
72026-03-085931

⊞ clientes

idnombrebarrio
1AnaCentro
2JorgeNorte
3LucíaCentro
4MartínSur
5SofíaNorte
6DiegoSur
7CarlaCentro
8PabloNorte

⊞ productos

idnombreprecio
1Yerba 1 kg4200
2Aceite de girasol 1,5 l3100
3Arroz 1 kg1500
4Fideos tirabuzón 500 g1100
5Leche entera 1 l1250
6Queso cremoso 1 kg8900
7Gaseosa cola 2,25 l2800
8Agua mineral 2 l1300
9Galletitas de agua950
10Detergente 750 ml1900
11Lavandina 1 l1050
12Pan lactal2300

⊞ sucursales

idnombre
1Centro
2Norte
3Sur

Actividad 2

Tus primeros JOIN

Tres misiones para unir tablas. Antes de escribir, mirá cómo se conectan: las tablas y sus columnas están a mano.

Columnas de ventas:idINTEGERfechaDATEcliente_idINTEGERproducto_idINTEGERsucursal_idINTEGERcantidadINTEGER
Columnas de productos:idINTEGERnombreTEXTcategoriaTEXTprecioREALstockINTEGER
Columnas de clientes:idINTEGERnombreTEXTbarrioTEXTtelefonoTEXT
  1. 1Mostrá la fecha de cada venta y el nombre del producto que se vendió.
  2. 2Mostrá la fecha, el nombre del cliente y la cantidad de cada venta.
  3. 3Mostrá las compras de Ana: fecha, nombre del producto y cantidad. Vas a necesitar dos JOIN y un WHERE.

Tu misión, las tablas, los mensajes y la ayuda están en el panel de la izquierda.

almacen.dbproductosclientessucursalesventasstock_diario
o Ctrl + Enter

Tocá Ejecutar para ver el resultado.

Chequeo rápido

¿Qué pasa si escribís el JOIN sin el ON?

Pedile a la IA que te dibuje las conexiones

Cuando una base tiene muchas tablas, la IA te puede ayudar a entender cómo se conectan. Copiá este pedido y cambiá lo que está entre corchetes:

Tengo estas tablas: [ventas (id, fecha, cliente_id, producto_id, sucursal_id, cantidad)], [productos (id, nombre, categoria, precio, stock)] y [clientes (id, nombre, barrio)]. Explicame cómo se conectan y escribime el JOIN para [ver cada venta con el nombre del cliente].

Después ejecutá la consulta y fijate si la cantidad de filas tiene sentido.

Para llevarte: las tablas se conectan con claves (los _id). JOIN … ON une las filas que coinciden, y los alias (v., p.) hacen la consulta más corta y clara.

Ya sabés cruzar tablas

¿Listo para la próxima lección?