Tres tablas
SQL · Unidad 8: Más uniones
- Plan completo
- SQL
- 10 ejercicios
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
| cliente | producto | cantidad |
|---|---|---|
| Luis | Ratón | 5 |
| Luis | Monitor | 2 |
| Luis | Tableta | 1 |
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. 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 namey señala anombre. ¿Qué línea tiene el problema?2. Predice la salida
El 12 de enero hubo dos pedidos. El 7 dice
cliente_id1 yproducto_id2. El 8 dicecliente_id5 yproducto_id4. Enclientes, la 1 es Ana y la 5 es Valeria. Enproductos, 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. 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. Completa el código
¿En qué ciudad se venden más accesorios? Completa la suma con las unidades de cada pedido.
5. Opción múltiple
¿Por qué no se puede unir
estudiantesconcursosdirectamente, sin pasar pornotas?6. Completa el código
¿A quién le da clase Irene, y qué nota le puso? Completa cada
ONcon la clave foránea denotasque apunta a esa tabla.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 JOINla deja conn.curso_idenNULL. Las uniones se resuelven de arriba abajo, y la segunda trabaja sobre lo que dejó la primera. ¿Qué devuelve esta consulta?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. 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
JOINa secas en la segunda unión. ¿Con cuál de estos cambios deja a alguien de segundo fuera de la lista?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
creditosdecursos. Primero quien más créditos tiene, 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.