Unidad 6. Ejercicio paso a paso: Subconsultas con EXISTS


Nota: Para realizar los ejercicios, utiliza la base de datos GestionSimples.

Objetivo

Realizar una consulta que, en su WHERE, compruebe si el registro en cuestión existe como resultado de otra consulta. Para ello, utilizaremos una subconsulta precedida de EXISTS o NOT EXISTS.

Ejercicio paso a paso

Listar los empleados (numemp, nombre y oficina) que no trabajan en oficinas dirigidas por el empleado 108.

SELECT numemp, nombre, oficina

FROM empleados

WHERE NOT EXISTS (SELECT *

			FROM oficinas

			WHERE dir = 108 and empleados.oficina = oficinas.oficina);

Resultado:

numemp nombre oficina
101 Antonio Viguer 12
103 Juan Rovira 12
104 José González 12
105 Vicente Pantalla 13
106 Luis Antonio 11
109 María Sunta NULL
110 Juan Victor NULL
112 Julián Martorell NULL
113 Juan Gris NULL
114 Pablo Moreno 13

Listar los productos (clave y descripcion) para los cuales no se ha recibido ningún pedido de 10 euros o más.

SELECT idfab, idproducto, descripcion

FROM productos

WHERE NOT EXISTS (SELECT * FROM pedidos

					WHERE  idfab = fab

					   AND idproducto = producto AND  importe >= 10);

Resultado:

idfab idproducto descripcion
aci 41001 arandela
aci 4100x junta
bic 41089 rodamiento
bic 41672 plato
imm 775c reostato 2
imm 887h caja clavos
imm 887p perno
imm 887x manivela
qsa xk48 red
qsa xk8a red

Listar las oficinas (oficina, ciudad) que tienen al menos un empleado cuya cuota represente más del 55% del objetivo de la oficina.

SELECT oficina, ciudad

FROM oficinas

WHERE EXISTS (SELECT *  FROM empleados

				 WHERE oficinas.oficina = empleados.oficina AND cuota > (.55 * objetivo));

Resultado:

oficina ciudad
13 Castellón
22 A Coruña

Listar los empleados (numemp, nombre y edad) que no dirigen una oficina.

SELECT numemp, nombre, edad

FROM empleados

WHERE NOT EXISTS (SELECT * FROM oficinas WHERE dir = numemp);

Resultado:

numemp nombre edad
101 Antonio Viguer 45
102 Alvaro Jaumes 48
103 Juan Rovira 29
107 Jorge Gutiérrez 49
109 María Sunta 31
110 Juan Victor 41
111 Juan Gris 50
112 Julián Martorell 50
113 Juan Gris 18
114 Pablo Moreno 45

   Inicio    






.