2014-04-11 4 views
0

3 개의 테이블이 있습니다. 하나는 출장 테이블이며 면허 번호 테이블에 연결되어 있으며 테이블은 직원 테이블에 연결되어 있습니다. 내 내부 select는 다음과 같습니다 :기본 선택 쿼리에서 중첩 쿼리의 값을 인쇄하는 방법은 무엇입니까?

SELECT TR.L#, TR.REG# , COUNT(TR.REG#) 
FROM TRIP TR 
GROUP BY TR.L#, TR.REG# 

은 라이센스 번호와 트럭 등록 번호 및 해당 라이센스와 각 트럭의 트립 횟수를 제공합니다. 이제 다른 테이블에있는 라이센스 번호 정보를 추가해야합니다. 이 세 개의 열을 기본 선택으로 전송하고 직원 이름 옆에 인쇄하려면 어떻게해야합니까?

SELECT E.FNAME, E.LNAME 
    FROM EMPLOYEE E 
    WHERE E.E# IN (
      SELECT E# 
      FROM DRIVER 
      WHERE L# IN (
         SELECT TR.L#, TR.REG# , COUNT(TR.REG#) 
         FROM TRIP TR 
        GROUP BY TR.L#, TR.REG# 
      ) 
    ); 

오류 :

너무 많은 값 가입 시도

:

SELECT TR.L#, TR.REG# , COUNT(TR.REG#), D.E# 
FROM TRIP TR 
INNER JOIN DRIVER D ON D.L# = TR.L# 
GROUP BY TR.L#, TR.REG# 
+0

예. 오류가 있습니다. 그룹이 표현식이 아닙니다. – Bernard

+0

예 i 참조. 해결 방안은 무엇인가? – Bernard

답변

2

을 내가 조인의 순서가 일치하도록이 쿼리를 작성하는 가장 쉬운 것 같아요 관계는 마치 데이터가 여행에서 직원을 거쳐 다음과 같은 행을 따라 이동하는 것처럼 보입니다.

select tr.l#, tr.reg#, d.e#, count(1) trips 
from trip tr 
join driver d on (d.l# = tr.l#) 
join employee e on (e.e# = d.e#) 
group by tr.l#, tr.reg#, d.e# 
+0

완벽 함. 이제는 잘 작동합니다. – Bernard

0
SELECT E.FNAME, E.LNAME, sub.<DRIVER FIELD NAME> 
FROM EMPLOYEE E JOIN (
      SELECT * 
      FROM DRIVER 
      WHERE L# IN (
         SELECT TR.L#, TR.REG# , COUNT(TR.REG#) 
         FROM TRIP TR 
        GROUP BY TR.L#, TR.REG# 
      ) 
    ) sub ON E.E#=sub.E# 
+0

줄 1의 오류 : ORA-01747 : 잘못된 user.table.column, table.column 또는 column specification – Bernard

관련 문제