Отображать DNAME, LOC, DEPTNO сотрудников, имеющих одинаковый MGR, используя только JOINS - PullRequest
0 голосов
/ 13 декабря 2018

Если я делаю это, я получаю результаты, но я хочу делать это только с соединениями.

SELECT DNAME, LOC, D.DEPTNO
  FROM EMP E, DEPT D
 WHERE E.DEPTNO = D.DEPTNO
   AND MGR IN (SELECT MGR FROM EMP GROUP BY MGR HAVING COUNT(*) > 1);

1 Ответ

0 голосов
/ 13 декабря 2018

Прежде всего, лучше использовать синтаксис ANSI-92 JOIN вместо устаревшего формата с разделением запятыми.

Этот запрос

SELECT DNAME, LOC, D.DEPTNO
  FROM EMP E
  JOIN DEPT D ON E.DEPTNO = D.DEPTNO
  JOIN (SELECT MGR FROM EMP GROUP BY MGR HAVING COUNT(*) > 1) EE ON E.MGR = EE.MGR ;

совпадает с твоим.Но если вы не хотите возвращать дублированные строки, этот

SELECT DNAME, LOC, D.DEPTNO
  FROM EMP E
  JOIN DEPT D ON E.DEPTNO = D.DEPTNO
 GROUP BY DNAME, LOC, D.DEPTNO 
HAVING COUNT(*) > 1; 

может быть предпочтительным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...