Saltar al contenido

Tres tablas

SQL · Unidad 8: Más uniones

El recibo de Luis, en la unidad pasada, no decía «Luis» en ninguna parte. Llevaba el producto, y el nombre de quien compraba vivía en una tercera tabla. ¿Quién compró qué?

Después de un JOIN puede ir otro. El primero pone al cliente junto a cada pedido, y el segundo añade el producto a esa misma fila. Cada uno lleva su ON debajo. clientes y productos tienen cada una su columna nombre, y en el resultado cada una sale con su título. Este es el recibo, con su nombre.

SELECT c.nombre AS cliente,
  pr.nombre AS producto, p.cantidad
FROM pedidos p
JOIN clientes c
  ON p.cliente_id = c.id
JOIN productos pr
  ON p.producto_id = pr.id
WHERE c.id = 2;

Devuelve

clienteproductocantidad
LuisRatón5
LuisMonitor2
LuisTableta1

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. Encuentra el bug

    El Cable viene con retraso, y en la unidad pasada la consulta del aviso devolvía dos números de cliente. Esta busca sus nombres y cuántos cables espera cada uno. Aquí SQL contesta ambiguous column name y señala a nombre. ¿Qué línea tiene el problema?

  2. 2. Predice la salida

    El 12 de enero hubo dos pedidos. El 7 dice cliente_id 1 y producto_id 2. El 8 dice cliente_id 5 y producto_id 4. En clientes, la 1 es Ana y la 5 es Valeria. En productos, el 1 es el Teclado, el 2 el Ratón, el 4 el Cable y el 5 el Portátil. ¿Qué devuelve esta consulta?

  3. 3. Ordena las líneas

    ¿Qué ha comprado Sofía? Ordena la consulta que la busca por su nombre y da el producto y la cantidad de sus pedidos. Sobran dos líneas.

  4. 4. Completa el código

    ¿En qué ciudad se venden más accesorios? Completa la suma con las unidades de cada pedido.

  5. 5. Opción múltiple

    ¿Por qué no se puede unir estudiantes con cursos directamente, sin pasar por notas?

  6. 6. Completa el código

    ¿A quién le da clase Irene, y qué nota le puso? Completa cada ON con la clave foránea de notas que apunta a esa tabla.

  7. 7. Predice la salida

    Leo y Sara son los estudiantes 6 y 7. Leo lleva Matemáticas y Ciencias. Sara no lleva ningún curso, así que el LEFT JOIN la deja con n.curso_id en NULL. Las uniones se resuelven de arriba abajo, y la segunda trabaja sobre lo que dejó la primera. ¿Qué devuelve esta consulta?

  8. 8. Ordena las líneas

    La lista de tercer grado para la reunión de padres, con cada estudiante y los cursos que lleva. Tienen que estar los tres del grado, lleven cursos o no. Ordena la consulta, con los estudiantes en orden alfabético y, dentro de cada uno, sus cursos también. Sobran dos líneas.

  9. 9. Encuentra el caso que falla

    La lista de segundo grado, con cada estudiante y los cursos que lleva. Tienen que estar todos los del grado, lleven cursos o no. Hoy son dos, Hugo, con tres cursos, y Julia, con dos. A la consulta se le quedó un JOIN a secas en la segunda unión. ¿Con cuál de estos cambios deja a alguien de segundo fuera de la lista?

  10. 10. Escribe el código

    En esta escuela se aprueba con 6, y quien aprueba un curso gana sus créditos. Escribe una consulta con dos columnas en este orden, el nombre de cada estudiante que ha aprobado algún curso y los créditos que suman los cursos que aprobó, que están en la columna creditos de cursos. Primero quien más créditos tiene, y los empates, por nombre.

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 →