SQL查询显示父表的记录,后跟其所有子表的记录

时间:2018-03-23 21:08:03

标签: sql oracle join

我需要记下一个SQL语句,它使用表EMP和DEPT显示以下输出。

输出:

DEPTNO DNAME            LOC           
---------- -------------- ------------- 
    10 ACCOUNTING     NEW YORK      

 EMPNO ENAME
---------- ----------
  7782 CLARK
  7839 KING
  7934 MILLER


    20 RESEARCH       DALLAS        
 EMPNO ENAME
---------- ----------
  7369 SMITH
  7566 JONES
  7788 SCOTT
  7876 ADAMS
  7902 FORD


    30 SALES          CHICAGO       
 EMPNO ENAME
---------- ----------
  7499 ALLEN
  7521 WARD
  7654 MARTIN
  7698 BLAKE
  7844 TURNER
  7900 JAMES

6 rows selected.

    40 OPERATIONS     BOSTON        


no rows selected

所以我需要查询中的这个特定输出,其中首先显示dept信息,然后显示子表中的所有相应记录。

1 个答案:

答案 0 :(得分:1)

从我的角度来看,这项任务并不像看起来那么简单。好吧,我的SQL * Plus功能可能不像以前那样好。主要问题是如何让EMP表的标题重复每个部门(不,我不知道该怎么做)。

我设法产生的最接近的结果是:

SQL> col deptno format 999999
SQL> col dname  format a10
SQL> col loc    format a10
SQL> set linesize 30
SQL> set recsep off
SQL> break on deptno on dname on loc
SQL>
SQL> select d.deptno, d.dname, d.loc, e.empno, e.ename
  2  from dept d left join emp e on e.deptno = d.deptno
  3  order by d.deptno;

 DEPTNO DNAME      LOC
------- ---------- ----------
     EMPNO ENAME
---------- ----------
     10 ACCOUNTING NEW YORK
      7839 KING

      7782 CLARK

      7934 MILLER
     20 RESEARCH   DALLAS
      7902 FORD

      7369 SMITH

      7566 JONES
     30 SALES      CHICAGO
      7900 JAMES

      7844 TURNER

      7654 MARTIN

      7521 WARD

      7499 ALLEN

      7698 BLAKE
     40 OPERATIONS BOSTON


13 rows selected.

一旦你,Enferno(或任何其他人)成功地获得了所要求的内容,我真的很想看到最终的代码。