Оператор JOIN в запросе SQL не возвращает ожидаемый результат - PullRequest
0 голосов
/ 20 января 2019

Я хочу использовать оператор JOIN, чтобы получить результат, вот мой код:

create table emp(E_id integer, e_name varchar(100), d_ID integer , primary key(e_id));
create table dep (d_ID integer, d_name varchar(100), manager_id integer ,primary key(d_ID) , FOREIGN KEY (manager_id) REFERENCES emp(E_id));
alter table emp add FOREIGN KEY(d_ID) references dep(d_ID);

insert  into dep values(11,'computer',1);
insert  into dep values(12,'commerce',2);
insert  into dep values(13,'technology',3);

insert into emp values(1,'vishal',11) ;
insert into emp values(2,'sachin',12) ;
insert into emp values(3,'deepal',13) ;
insert into emp values(4,'sumit',11) ;
insert into emp values(5,'vinay',11) ;
insert into emp values(6,'ravish',14) ;

Я хочу найти менеджера по поиску конкретного сотрудника с такими операторами соединения, как менеджер по vinay, результат должен быть vishal Я использовал вложенный запрос:

  select e_name 
from emp 
where e_id in (select  manager_id
               from dep 
               where dep.d_id in(select d_ID 
                                       from emp 
                                       where emp.e_name ='sumit'));

Я получаю правильный результат, но когда я использую оператор JOIN, он не работает, он показывает мне результат

vishal
sachin
deepal 

я ожидаю результата вот код:

select e_name 
from emp natural join dep 
where dep.manager_id=emp.e_id and emp.e_name='sumit';

Ответы [ 2 ]

0 голосов
/ 20 января 2019

Вам необходимо присоединиться emp к dep и снова к emp:

select e.e_name 
from emp join dep 
on dep.d_id = emp.d_id
inner join emp e
on e.e_id = dep.manager_id
where emp.e_name='sumit';

См. демо

0 голосов
/ 20 января 2019

Не используйте natural join! Он выбирает условия join. Вы просто хотите inner join:

select e.e_name
from emp e inner join
     dep d
     on d.manager_id = e.e_id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...