Encontrar lo que falta
SQL · Unidad 8: Más uniones
- Plan completo
- SQL
- 10 ejercicios
¿A quién no le ha vendido nada la tienda todavía? El dueño quiere mandarles un descuento de bienvenida. La pregunta es por algo que no está, y hasta hoy ninguna consulta podía buscar una ausencia.
El LEFT JOIN la deja a la vista. Quien no tiene pedidos sale con las columnas de pedidos en NULL, y un WHERE con IS NULL se queda justo con esas filas.
SELECT c.nombre, p.id, p.fecha
FROM clientes c
LEFT JOIN pedidos p
ON p.cliente_id = c.id
WHERE p.id IS NULL;Devuelve
| nombre | id | fecha |
|---|---|---|
| Camila | NULL | NULL |
| Bruno | NULL | NULL |
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. Completa el código
¿Qué producto no se ha vendido nunca? Completa con la columna que solo llega vacía cuando no hay pedido.
2. Predice la salida
En Lima viven Ana, Valeria y Bruno. En Bogotá, Luis y Camila. ¿Qué devuelve esta consulta?
3. Ordena las líneas
El descuento de bienvenida va por correo, y los sobres se preparan en orden alfabético. Ordena la consulta que da el nombre y la ciudad de quien no ha pedido nada. Sobran dos líneas.
4. Opción múltiple
¿Cuál de estas preguntas no se puede contestar con una sola tabla ni con un
JOINa secas?5. Predice la salida
En la unidad 5 viste que
COUNT(*)cuenta filas, yCOUNT(columna), las filas donde esa columna no esNULL. Diego tiene dos pedidos, y Camila y Bruno, ninguno. ¿Qué devuelve esta consulta?6. Encuentra el bug
Para decidir qué reponer, el dueño cuenta cuántas veces se ha pedido cada producto agotado. Del Cable hay dos pedidos, y del Parlante, ninguno. El reporte dice que el Parlante se ha pedido una vez. ¿Qué línea tiene el problema?
7. Opción múltiple
Un reporte de pedidos por cliente, hecho con
COUNT(*)sobre elLEFT JOIN, dice hoy 1 para Camila, que no ha pedido nada. Mañana Camila hace su primer pedido. ¿Qué dirá ese reporte?8. Ordena las líneas
¿Quién ha comprado una sola vez, o ninguna? La tienda quiere escribirles. Ordena la consulta que da el nombre y cuántos pedidos ha hecho cada uno, primero quien menos tiene y, en los empates, por nombre. Quien no ha pedido sale con un 0. Sobran dos líneas.
9. Completa el código
¿Cuántas unidades ha pedido cada cliente de Bogotá? Allí viven Luis, con tres pedidos, y Camila, sin ninguno. Completa la suma.
10. Escribe el código
El reporte de ventas completo, con sus ocho líneas. Escribe una consulta con dos columnas en este orden, el nombre de cada producto y las unidades que se han pedido de él, con un 0 para el que nadie ha pedido. Primero el más pedido, y los empates, por nombre.
Se abre en el navegador. Esta lección es del plan completo; la primera unidad de cada curso es gratis.