Ejercicios Resueltos de Consultas SQL Avanzadas
Enviado por Chuletator online y clasificado en Inglés
Escrito el en
español con un tamaño de 2,6 KB
Ejercicios de Consultas SQL
1. Fecha de nacimiento de empleados con ventas específicas
Mostrar la fecha de nacimiento de los empleados que hayan vendido un bolso con asa cuya descripción del bolso acabe en 'e' o 'f'. Utiliza JOIN.
SELECT DISTINCT E.FNac
FROM EMPLEADOS E
JOIN COMERCIOS C ON E.CodC = C.CodC
JOIN VENTAS V ON V.CodC = C.CodC
JOIN BOLSOS B ON V.CodA = B.CodA
JOIN MATERIALES M ON B.CodM = M.CodM
WHERE (B.Descripcion LIKE '%e' OR B.Descripcion LIKE '%f')
AND B.TieneAsa = 'Si';4. Bolsos sin asa vendidos por empleados con condiciones de nombre y DNI
Mostrar el código de aquellos bolsos sin asa vendidos por un empleado cuyo nombre tenga más de 4 letras y su DNI empiece por 8. Se presentan las dos formas de resolución.
Forma 1: Uso de Joins
SELECT DISTINCT B.CodA
FROM BOLSOS B
JOIN VENTAS V ON B.CodA = V.CodA
JOIN COMERCIOS C ON V.CodC = C.CodC
JOIN EMPLEADOS E ON C.CodC = E.CodC
WHERE E.Nombre LIKE '_____%'
AND E.DNI LIKE '8%'
AND B.TieneAsa = 'No';Forma 2: Uso de Subconsultas
SELECT B.CodA
FROM BOLSOS B
WHERE B.TieneAsa = 'No'
AND B.CodA IN (SELECT V.CodA
FROM VENTAS V
WHERE V.CodC IN (SELECT C.CodC
FROM COMERCIOS C
WHERE C.CodC IN (SELECT E.CodC
FROM EMPLEADOS E
WHERE E.DNI LIKE '8%'
AND E.Nombre LIKE '_____%')));6. Comercios con empleados que solo empiezan por 'A'
Mostrar el nombre del comercio en el que SOLO trabajan empleados con nombres que empiezan por 'A'.
SELECT DISTINCT C.Nombre
FROM EMPLEADOS E
JOIN COMERCIOS C ON E.CodC = C.CodC
WHERE E.Nombre LIKE 'A%'
AND NOT EXISTS (SELECT *
FROM EMPLEADOS E1
WHERE E1.CodC = C.CodC
AND E1.Nombre NOT LIKE 'A%');8. Materiales utilizados exclusivamente en comercios de 'Teror'
Muestra a través de SQL la descripción de los materiales que se utilizan SOLO en bolsos vendidos en comercios de 'Teror'.
SELECT DISTINCT M.Descripcion
FROM MATERIALES M
JOIN BOLSOS B ON M.CodM = B.CodM
JOIN VENTAS V ON B.CodA = V.CodA
JOIN COMERCIOS C ON V.CodC = C.CodC
WHERE C.Localidad = 'Teror'
AND NOT EXISTS (SELECT *
FROM VENTAS V1
JOIN COMERCIOS C1 ON V1.CodC = C1.CodC
WHERE V1.CodA = B.CodA
AND C1.Localidad != 'Teror');