Clase 06 · 22 minGratis

JOIN: cruzar información de varias tablas

Clase 6 del curso gratis SQL desde Cero: qué es un join, en qué se diferencian INNER, LEFT, RIGHT y FULL JOIN, y cómo se escriben sobre una tabla de clientes y otra de pedidos.

Toca cualquier marca ▸ 0:00 de los apuntes y el video salta a ese momento. Abrir en YouTube

La idea: cruzar listas que comparten algo

Tres listas, quizá administradas por tres áreas que ni se conocen: edades, salarios y deudas. ¿Qué edad tiene la persona que no debe nada? Buscas en la lista de deudas quién tiene cero (Viviana) y con ese nombre vas a la de edades . Eso es un join: enriquecer información cruzando tablas a través de una columna en común .

Los cuatro tipos

Imagina dos listas de casas: las que tienen algo azul (A) y las que tienen algo verde (B).

  • INNER JOIN — solo lo que está en las dos: casas azules y verdes .
  • LEFT JOIN — todo A, y de B lo que coincida: todas las casas con azul, tengan o no verde .
  • RIGHT JOIN — el espejo: todo B, y de A lo que coincida .
  • FULL JOIN — todo de las dos, coincida o no . Es el que menos vas a usar.

Las tablas de práctica

Pruébalo · base joins
Pruébalo · base joins

Cuatro clientes y tres pedidos. ClienteID en pedidos es la llave foránea que dice quién hizo cada pedido: los dos primeros son de Juan Pérez y el tercero de Ana Gómez . Luis y María nunca han comprado.

INNER JOIN

Se parte de una tabla, se une con la otra y, con ON, se dice qué columna tienen en común :

Pruébalo · base joins

Salen tres filas: solo los clientes que tienen pedido, con las columnas de las dos tablas juntas . En muchos motores puedes escribir solo JOIN: es un INNER JOIN .

Elegir columnas y resolver ambigüedades

Pruébalo · base joins

Cuando una columna existe en las dos tablas (aquí, ClienteID), hay que decir de cuál la quieres con tabla.columna; si no, SQL responde que es ambigua . Con alias cortos la consulta queda más limpia:

Pruébalo · base joins

Un join puede encadenar tres, cuatro o más tablas .

LEFT JOIN

Pruébalo · base joins

Ahora están los cuatro clientes. Luis y María aparecen con las columnas de pedidos en NULL: existen, pero no han comprado . Es la forma de enriquecer una tabla sin perder registros.

RIGHT JOIN

Pruébalo · base joins

La base ahora es pedidos, y todos los pedidos tienen cliente, así que no hay vacíos. Un RIGHT JOIN es un LEFT JOIN con las tablas al revés: la que va primero es «la izquierda» .

FULL JOIN

Pruébalo · base joins

Todo, coincida o no. Con tablas grandes el resultado puede crecer mucho .

RIGHT JOIN y FULL JOIN llegaron a SQLite en 2022 (versión 3.39). En un SQLite viejo, o en MySQL, que no tiene FULL JOIN, se reemplazan con LEFT JOIN y UNION.

Retos de esta clase

1. El nombre de los clientes que nunca han hecho un pedido.

Reto · base joins

2. Para cada cliente que haya comprado, su nombre, su ciudad y el total gastado.

Reto · base joins

3. Los cuatro clientes con su número de pedidos, incluidos los que tienen cero. Dos columnas: nombre y pedidos.

Reto · base joins

Sigue con la clase 7

INSERT, UPDATE y DELETE: manipular datos

Seguir el canal de WhatsApp