Saltar al contenido

LEFT JOIN

SQL · Unidad 8: Más uniones

La unidad pasada dejó una lista a medias. El dueño sacó de la lista de pedidos con nombre a quién saludar por año nuevo, y salieron seis nombres de ocho. Para saludar bastaba con clientes. Ahora quiere más, escribirle a cada uno con sus pedidos delante, y también a quien no tiene ninguno. Camila y Bruno no han pedido nada, y el JOIN los dejaba fuera.

LEFT JOIN conserva todas las filas de la tabla del FROM, tengan pareja o no. Estos son los dos clientes de Bogotá. Luis sale tres veces, como antes. Camila sale una, con la fecha vacía, porque no hay ningún pedido que poner a su lado.

SELECT c.nombre, p.fecha
FROM clientes c
LEFT JOIN pedidos p
  ON p.cliente_id = c.id
WHERE c.ciudad = 'Bogotá';

Devuelve

nombrefecha
Luis2026-01-04
Luis2026-01-11
Luis2026-01-20
CamilaNULL

El resto de la explicación está en la lección, que es del plan completo.

Ejercicios de esta lección

Se hacen en la app, que los corrige al momento y explica por qué.

  1. 1. Predice la salida

    Los clientes 6, 7 y 8 son Diego, Camila y Bruno. Diego ha hecho los pedidos 9 y 11. Los otros dos, ninguno. ¿Qué devuelve esta consulta?

  2. 2. Ordena las líneas

    ¿Qué se ha pedido de cada producto de la sección Audio? Tienen que salir todos, también el que nadie ha pedido. Ordena la consulta que muestra el producto y la cantidad de cada pedido, con el producto más caro primero y, dentro de cada uno, por número de pedido. Sobran dos líneas.

  3. 3. Opción múltiple

    La tienda tiene 8 clientes y 12 pedidos, y dos clientes no han pedido nada. ¿Cuántas filas devuelve esta consulta?

  4. 4. Predice la salida

    Sofía es la clienta 3. No tiene ciudad anotada, y ha hecho un pedido, el 15 de enero. Camila es la 7, vive en Bogotá y no ha pedido nada. ¿Qué devuelve esta consulta?

  5. 5. Completa el código

    La lista de los clientes 3, 7 y 8 con la fecha de su pedido, que diga sin pedidos donde no haya ninguno. Completa con la columna que llega vacía cuando alguien no ha pedido.

  6. 6. Completa el código

    Antes de reponer, el dueño mira qué días se pidió cada producto agotado. Hay dos con stock 0, el Cable y el Parlante, y tienen que salir los dos. Completa cada línea con su tabla.

  7. 7. Opción múltiple

    En una consulta ajena lees FROM pedidos p RIGHT JOIN clientes c, con el ON de siempre. ¿Con cuál de estas formas salen las mismas filas?

  8. 8. Encuentra el bug

    La tienda abre su local en Lima e invita a la fiesta a sus tres clientes de allí, hayan comprado o no. La lista lleva a cada invitado con el número de sus pedidos. Corre sin error, y Bruno, que vive en Lima, no está. ¿Qué línea tiene el problema?

  9. 9. Ordena las líneas

    La tienda prepara una oferta para sus clientes de 30 a 49 años, hayan comprado o no. Ordena la consulta que muestra el nombre, la edad y la fecha de cada pedido, del cliente más joven al mayor y, dentro de cada uno, por fecha. Sobran dos líneas.

  10. 10. Encuentra el caso que falla

    El dueño viaja a Quito y lleva la lista de todos sus clientes de allí, con el número de sus pedidos si los tienen. Hoy en Quito solo vive Mateo, que tiene un pedido. Alguien escribió la consulta con pedidos en el FROM. ¿Con cuál de estos cambios deja a alguien de Quito fuera de la lista?

  11. 11. Escribe el código

    La lista que el dueño quiere ahora, con los ocho clientes y lo que ha pedido cada uno. Escribe una consulta con tres columnas en este orden, el nombre del cliente, su ciudad, que diga Sin ciudad si no está anotada, y la fecha de cada pedido suyo, que diga sin pedidos si no tiene ninguno. Una fila por cada pedido, y una para quien no tiene ninguno, por nombre y, dentro de cada cliente, del pedido más viejo al más nuevo.

Hacer esta lección

Se abre en el navegador. Esta lección es del plan completo; la primera unidad de cada curso es gratis.

Ver todas las lecciones →