Saltar al contenido

ON o WHERE

SQL · Unidad 8: Más uniones

Las cajas grandes, las de pedidos de 3 unidades o más, llevan desde este mes un folleto del local de Lima. ¿Cuáles de los tres clientes de Lima han recibido ya alguna? El dueño quiere verlos a los tres, cada uno con su caja grande al lado si la hubo.

Este es el primer intento, con la condición del tamaño en el WHERE. Sale Valeria sola. Ana y Bruno son de Lima, la consulta lleva un LEFT JOIN para no perder a nadie, y los perdió.

SELECT c.nombre, p.id, p.cantidad
FROM clientes c
LEFT JOIN pedidos p
  ON p.cliente_id = c.id
WHERE c.ciudad = 'Lima'
  AND p.cantidad >= 3;

Devuelve

nombreidcantidad
Valeria83

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. Opción múltiple

    ¿Por qué no sale Bruno, si el LEFT JOIN conserva a todos los clientes?

  2. 2. Predice la salida

    En Bogotá viven Luis y Camila. Luis tiene tres pedidos, de 5, 2 y 1 unidades. Camila, ninguno. ¿Qué devuelve esta consulta?

  3. 3. Ordena las líneas

    El dueño llama esta semana a todos sus clientes. A quien ha pedido algo desde el 12 de enero le da las gracias, y a los demás les pregunta qué les falta. Ordena la consulta que da el nombre de cada cliente con la fecha de sus pedidos desde ese día, por nombre y por fecha. No puede faltar ninguno de los ocho. Sobran dos líneas.

  4. 4. Predice la salida

    Otra vez Bogotá, con Luis y sus pedidos de 5, 2 y 1 unidades, y Camila sin ninguno. Esta vez la condición de la cantidad está en el ON. ¿Qué devuelve esta consulta?

  5. 5. Encuentra el bug

    El reporte de cajas grandes dice cuántas ha recibido cada cliente. Debería llevar a los ocho, con un 0 para quien no ha recibido ninguna. La consulta corre sin error, y salen solo tres nombres. ¿Qué línea tiene el problema?

  6. 6. Opción múltiple

    Alguien aprendió la lección al revés y pasó al ON también la condición de la ciudad. La tienda tiene 8 clientes, y 3 viven en Lima. ¿Cuántos clientes distintos salen en el resultado?

  7. 7. Ordena las líneas

    El local de Lima va a ofrecerles el Teclado, que es el producto 1, a los tres clientes de allí. Antes quiere ver quién lo compró ya, y cuándo. Ordena la consulta que da los tres nombres, en orden alfabético, con la fecha en que cada uno pidió un Teclado, o vacía si no lo ha pedido. Sobran dos líneas.

  8. 8. Encuentra el caso que falla

    La tienda visita Cusco la semana que viene y lleva la lista de todos sus clientes de allí. Junto a cada uno van los pedidos que todavía tiene por recibir, que son los del 12 de enero en adelante. Quien no espere nada sale igual, con la fecha vacía. Hoy en Cusco solo vive Diego, con pedidos del 14 y del 15. La consulta tiene la condición de la fecha en el WHERE. ¿Con cuál de estos cambios deja a alguien de Cusco fuera de la lista?

  9. 9. Completa el código

    Las dos últimas lecciones en una consulta. ¿Quién no ha recibido nunca una caja grande? La condición del tamaño decide qué pedidos cuentan como pareja, y el IS NULL se queda con quien no tuvo ninguna. Completa las dos palabras.

  10. 10. Escribe el código

    ¿A quién llama el dueño para preguntarle qué le falta? Escribe una consulta con una sola columna, el nombre de los clientes que no tienen ningún pedido con fecha del 12 de enero en adelante. El de Luis, fechado el día 20, cuenta, porque ya está pedido. En orden alfabético.

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 →