Получение данных из двух таблиц? - PullRequest
0 голосов
/ 09 сентября 2011

Я пытаюсь получить данные из двух разных таблиц и вставить в оператор, но это не работает.Вот что я хочу получить в качестве законченного утверждения: я хочу, чтобы запрос отображал dname, loc, Number of People.У меня проблемы с подзапросом.

 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>

Таблица dept

 SQL> select * from dept;

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

   SQL>  

Ответы [ 3 ]

0 голосов
/ 09 сентября 2011

Вы пытаетесь достичь чего-то подобного?

select dname, loc, (select count(ename) from emp where DEPTNO = dept.deptno) as Number_of_people 
from dept;
0 голосов
/ 09 сентября 2011

Попробуйте это

select dept.dname, dept.loc,count(*) 
from emp 
join dept on emp.deptNo=dept.deptno
group by dept.dname,dept.loc
0 голосов
/ 09 сентября 2011

Я не уверен, что вы пытаетесь сделать, но кое-что выделяется тем, что вам, вероятно, нужно использовать select в вашем подзапросе.Попробуйте:

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