SQL - más dudas principantes...

 
Vista:

más dudas principantes...

Publicado por pepe (4 intervenciones) el 04/10/2010 19:47:09
Bueno, tras unos ejercicios más, me encuentro con más dudas :S
En este caso quiero obtener el numero y el nombre de los departamentos que no tienen NINGÚN empleado que viva en madrid, tengo mi solución propuesta, y creo que se donde falla, pero no se solucionar el error...

las tablas sobre las consultas son las siguientes:

CREATE TABLE DEPARTAMENTS
( NUM_DPT INTEGER,
NOM_DPT CHAR(20),
PLANTA INTEGER,
EDIFICI CHAR(30),
CIUTAT_DPT CHAR(20),
PRIMARY KEY (NUM_DPT));

CREATE TABLE EMPLEATS
( NUM_EMPL INTEGER,
NOM_EMPL CHAR(30),
SOU INTEGER,
CIUTAT_EMPL CHAR(20),
NUM_DPT INTEGER,
NUM_PROJ INTEGER,
PRIMARY KEY (NUM_EMPL),
FOREIGN KEY (NUM_DPT) REFERENCES DEPARTAMENTS (NUM_DPT),
FOREIGN KEY (NUM_PROJ) REFERENCES PROJECTES (NUM_PROJ));

y mi solución de momento es esta:

SELECT D.NUM_DPT, NOM_DPT
FROM EMPLEATS E, DEPARTAMENTS D
WHERE E.NUM_DPT = D.NUM_DPT
GROUP BY CIUTAT_EMPL, D.NUM_DPT, NOM_DPT
HAVING CIUTAT_EMPL <> 'MADRID'
ORDER BY NOM_DPT ASC

El error está en que si tengo un departamento con empleados en madrid y en barcelona por ejemplo, la salida no tendria que sacar es departamento ya que contiene al menos un empleado en madrid...

Alguna idea?

Gracias de antemano como siempre ^^

pepe
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:más dudas principantes...

Publicado por pepe (4 intervenciones) el 06/10/2010 12:00:07
tras horas y horas, creo que lo he conseguido, dejo acá mi solución ;)

SELECT D.NUM_DPT, D.NOM_DPT
FROM DEPARTAMENTS D
WHERE NOT EXISTS
(SELECT E.NUM_DPT, E.CIUTAT_EMPL
FROM EMPLEATS E
WHERE D.NUM_DPT = E.NUM_DPT
GROUP BY E.NUM_DPT, E.CIUTAT_EMPL
HAVING E.CIUTAT_EMPL = 'MADRID'
)
ORDER BY D.NOM_DPT ASC

pepe
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar