SQL заявление о соединении - PullRequest
0 голосов
/ 05 ноября 2019

Вопрос: Укажите имя сотрудника как «staff_member» и имя руководителя в качестве «supervisor» для всех сотрудников, которые не живут в том же городе, что и их руководитель.

Отношения:

Staff (Snum, Name, DOB, Address, City, Gender, Salary, Supervisor,Dnum) 
Dept ( Dnum, Dname, Manager, Mgrstartdate ) 
Deptlocation ( Dnum, Dcity ) 
Project ( Pnum, Pname, Pcity, Dnum ) 
Workson ( Snum, Pnum, Hours )

Column Supervisor of table Staff is a foreign key which references column Snum of table Staff.
Column Dnum of table Staff is a foreign key which references column Dnum of table Dept.
Column Manager of table Dept is a foreign key which references column Snum of table Staff.
Column Dnum of table Deptlocation is a foreign key which references column Dnum of table Dept.
Column Dnum of table Project is a foreign key which references column Dnum of table Dept.
Column Snum of table Workson is a foreign key which references column Snum of table Staff.
Column Pnum of table Workson is a foreign key which references column Pnum of table Project.

Что я получил так далеко:

SELECT name AS staff_member,  supervisor
from staff s
INNER JOIN deptlocation d ON s.dnum = d.dnum
WHERE s.city NOT EXISTS (d.city)

Что я делаю не так?

Error:Your query has syntax errors.
Description:java.sql.SQLException: ORA-00920: invalid relational operator

Ответы [ 2 ]

1 голос
/ 05 ноября 2019

Вам нужен self join. Я считаю, что столбец supervisor в таблице staff указывает на snum из supervisor из таблицы staff.

Select st.name as staff_member, 
       Sp.name as supervisor
  From staff st 
       Inner join staff sp 
       On (st.supervisor = sp.snum)
 Where st.city <> sp.city;

Приветствия !!

0 голосов
/ 05 ноября 2019

попробуйте это:

SELECT name AS staff_member,  supervisor
from staff s
INNER JOIN deptlocation d ON s.dnum = d.dnum
WHERE NOT EXISTS (
select 1 from deptlocation aa
aa.city=s.city 
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...