我现在有一张主表,几张子表:
主表A,子表B,C,D,E;
A与E之间是一对多关系,A与B之间是一对多关系,B与C之间,C与D之间,也是一对多的关系;要实现通过A的主键查询,SQL要怎么写

解决方案 »

  1.   


    SQL> select * from emp;
     
    EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO
    ----- ---------- --------- ----- ----------- --------- --------- ------
     7369 SMITH      CLERK      7902 1980-12-17     800.00               20
     7499 ALLEN      SALESMAN   7698 1981-02-20    1600.00    300.00     30
     7521 WARD       SALESMAN   7698 1981-02-22    1250.00    500.00     30
     7566 JONES      MANAGER    7839 1981-04-02    2975.00               20
     7654 MARTIN     SALESMAN   7698 1981-09-28    1250.00   1400.00     30
     7698 BLAKE      MANAGER    7839 1981-05-01    2850.00               30
     7782 CLARK      MANAGER    7839 1981-06-09    2450.00               10
     7788 SCOTT      ANALYST    7566 1987-04-19    3100.00               20
     7839 KING       PRESIDENT       1981-11-17    5000.00               10
     7844 TURNER     SALESMAN   7698 1981-09-08    1500.00      0.00     30
     7876 ADAMS      CLERK      7788 1987-05-23    1100.00               20
     7900 JAMES      CLERK      7698 1981-12-03     950.00               30
     7902 FORD       ANALYST    7566 1981-12-03    3000.00               20
     7934 MILLER     CLERK      7782 1982-01-23    1300.00               10
     
    14 rows selected
     
    SQL> select * from dept;
     
    DEPTNO DNAME          LOC
    ------ -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON
     --dept和emp表存在着1:m的关系,使用等值连接,不就可以查询到deptno对应的员工数目了
    SQL> select dept.deptno,count(emp.empno) cnt
      2  from dept,emp
      3  where dept.deptno=emp.deptno
      4  group by dept.deptno
      5  /
     
    DEPTNO        CNT
    ------ ----------
        10          3
        20          5
        30          6