2011-09-09 122 views
-1

我想從兩個不同的表中獲取數據,並將其放入聲明中,但不工作。這就是我期望得到的完整聲明:我希望查詢顯示dname,loc,人數。我遇到了子查詢的問題。從兩個表中獲取數據?

SQL> select dname, loc from dept where ename in (count(ename) AS Number_of_People from emp); 
select dname, loc from dept where ename in (count(ename) AS Number_of_People from emp) 
             * 
ERROR at line 1: 
ORA-00934: group function is not allowed here 


SQL> 

表EMP

SQL> select empno, ename, job, hiredate, deptno from emp; 

EMPNO ENAME  JOB  HIREDATE  DEPTNO 
---------- ---------- --------- --------- ---------- 
    7839 KING  PRESIDENT 17-NOV-81   10 
    7698 BLAKE  MANAGER 01-MAY-81   30 
    7782 CLARK  MANAGER 09-JUN-81   10 
    7566 JONES  MANAGER 02-APR-81   20 
    7654 MARTIN  SALESMAN 28-SEP-81   30 
    7499 ALLEN  SALESMAN 20-FEB-81   30 
    7844 TURNER  SALESMAN 08-SEP-81   30 
    7900 JAMES  CLERK  03-DEC-81   30 
    7521 WARD  SALESMAN 22-FEB-81   30 
    7902 FORD  ANALYST 03-DEC-81   20 
    7369 SMITH  CLERK  17-DEC-80   20 

EMPNO ENAME  JOB  HIREDATE  DEPTNO 
---------- ---------- --------- --------- ---------- 
    7788 SCOTT  ANALYST 09-DEC-82   20 
    7876 ADAMS  CLERK  12-JAN-83   20 
    7934 MILLER  CLERK  23-JAN-82   10 

14 rows selected. 

SQL> 

表部門

SQL> select * from dept; 

DEPTNO DNAME   LOC 
    ---------- -------------- ------------- 
    10 ACCOUNTING  NEW YORK 
    20 RESEARCH  DALLAS 
    30 SALES   CHICAGO 
    40 OPERATIONS  BOSTON 

    SQL> 
+0

你怎麼知道一個人在工作的哪個部門?在您的表中不清楚... – Sparky

回答

0

你想達到這樣的事情嗎?

select dname, loc, (select count(ename) from emp where DEPTNO = dept.deptno) as Number_of_people 
from dept; 
0

我不知道你想做什麼,但東西伸出的是,你可能需要使用你的子查詢中有一個select。嘗試:

select dname, loc 
from dept 
where ename in (select count(ename) AS Number_of_People from emp); 
+0

SQL> select dname,loc從dept where ename in(select count(ename)AS Number_of_People from emp); (select count(ename)AS Number_of_People from emp) * ERROR at line 1: ORA-00904:「ENAME」:invalid identifier – user770022

+0

好的,那麼'ename'和首先它在那裏做什麼? – 2011-09-09 04:14:03

+0

ename是員工的姓名。至於它在那裏做什麼,我不是100%確定這是否正確我是在問我做錯了什麼的問題? – user770022

0

試試這個

select dept.dname, dept.loc,count(*) 
from emp 
join dept on emp.deptNo=dept.deptno 
group by dept.dname,dept.loc