Salve a tutti ho dei problemi sulla realizzazione dalla seguente query:
select nome,cognome
from personale as p1
where exists (
select p.id_dip
from personale as p,dipartimento as d
where p.id_dip in(
select p2.id_dip
from personale as p2, dipartimento as d2
where d2.id=p2.id_dip
)
and p.id_dip=d.id
and p.matricola=p1.matricola
group by p.id_dip
having count(p.matricola)>2
);
che dovrebbe riportare solo 2 nomi, ma me li riporta tutti, se qualcuno di voi fosse così gentile da darmi qualche dritta gliene sarei grato
il database è il seguente:
create database pd;
create table dipartimento(
Id int(5) primary key,
Localita text
)engine=innodb;
create table personale(
Matricola int(5) primary key,
Nome text,
cognome text,
Id_dip int (5),
constraint fk foreign key(Id_dip)references dipartimento(id)
)engine=innodb;
Dipartimenti:
INSERT INTO `dipartimento`(`Id`, `Descrizione`, `Localita`) VALUES (1,'','');
INSERT INTO `dipartimento`(`Id`, `Descrizione`, `Localita`) VALUES (2,'','');
INSERT INTO `dipartimento`(`Id`, `Descrizione`, `Localita`) VALUES (3,'','');
INSERT INTO `dipartimento`(`Id`, `Descrizione`, `Localita`) VALUES (4,'','');
INSERT INTO `dipartimento`(`Id`, `Descrizione`, `Localita`) VALUES (5,'','');
Personale:
INSERT INTO `personale`(`Matricola`, `Nome`, `Cognome`, `Id_dip`) VALUES (1,'a','a',1);
INSERT INTO `personale`(`Matricola`, `Nome`, `Cognome`, `Id_dip`) VALUES (2,'b','a',4);
INSERT INTO `personale`(`Matricola`, `Nome`, `Cognome`, `Id_dip`) VALUES (3,'c','b',4);
INSERT INTO `personale`(`Matricola`, `Nome`, `Cognome`, `Id_dip`) VALUES (4,'r','b',5);
INSERT INTO `personale`(`Matricola`, `Nome`, `Cognome`, `Id_dip`) VALUES (5,'e',y'',3);
INSERT INTO `personale`(`Matricola`, `Nome`, `Cognome`, `Id_dip`) VALUES (6,'o',p'',3);
INSERT INTO `personale`(`Matricola`, `Nome`, `Cognome`, `Id_dip`) VALUES (7,'s','q',3);
INSERT INTO `personale`(`Matricola`, `Nome`, `Cognome`, `Id_dip`) VALUES (8,'y','z',4);