Найти EId и EName - PullRequest
       4

Найти EId и EName

0 голосов
/ 08 марта 2020

Вот схема -

CREATE TABLE EMp(eId integer PRIMARY KEY, Name nvarchar(max), age integer);

CREATE TABLE Project(pId integer PRIMARY KEY, pName nvarchar(max), ploc nvarchar(max));

CREATE TABLE EmpProject(eid integer, FOREIGN KEY (eid) REFERENCES EMp(eid), pid integer FOREIGN KEY (pid) REFERENCES Project(pId), hrs integer);

Мне нужно найти имя и ID сотрудника, который работает как минимум в 3 проектах, но ни одного в «Мумбаи»

Я пробовал много Варианты последний из которых -

select eid, Name from EMp E, Project P, EmpProject EP where  
EP.pNum = P.pId and P.ploc <> 'Mumbai' 
and E.eId in (select eno from EmpProject group by eno having count(*) >=3 )

Заранее спасибо.

1 Ответ

1 голос
/ 08 марта 2020

Объедините таблицы, сгруппируйте их по сотрудникам и задайте условия в предложении HAVING:

select E.eid, E.Name 
from EMp E 
inner join EmpProject EP on EP.eid = E.eid
inner join Project P  on P.pid = EP.pid
group by E.eid, E.Name
having count(distinct P.pid) >= 3 and sum(case when P.ploc = 'Mumbai' then 1 else 0 end) = 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...