2014-11-22 2 views
-1

XYZ 회사의 각 프로젝트 (프로젝트에서)에 대한 총 비용을 알아야합니다. 총 비용은 송장 정보 테이블에서 (단가 * 수량)의 합계로 간주됩니다. XYZ_PROJECTS을 (INVOICE_NUMBER 사용) XYZ_INVOICE_DETAILS와 XYZ_INVOICES (PROJECT_NUMBER 사용) XYZ_INVOICES로 : 3 테이블을 결합하여 총 비용을 알아보십시오

  1. 는 쿼리에 세 테이블을 조인해야하는 각 프로젝트의 총 비용을 알아 보려면.

  2. SQL Workshop> SQL Commands로 이동하십시오. "선택"쿼리를 작성하고 실행하여 프로젝트 번호, XYZ_PROJECTS의 프로젝트 이름, XYZ_INVOICE_DETAILS의 합계 (c.qty * c.Unit_price)를 선택하십시오. SUM 집계 함수가 사용되므로 쿼리 끝에 "project_number, project_name"을 추가해야합니다. 쿼리를 실행하십시오. 나는 테이블에 가입하려면이 옵션을 사용하지만 같은 시간에 3 테이블에 가입하는 방법을 모른다


을 다음과 같이 화면이 좋아한다.

select * 
from XYZ_PROJECTS c 
join XYZ_INVOICES do on c.PROJECT_NUMBER = do.PROJECT_NUMBER 

select * 
from XYZ_INVOICES i 
join XYZ_INVOICE_DETAILS do on i.INVOICE_NUMBER = do.INVOICE_NUMBER 

아마도 내가 잘못했습니다. 제발 친절하게 도와주세요. 당신이 아직 송장이없는 제로 비용 프로젝트 XYZ_PROJECTS에서 모든 행을 유지하기 위해 left outer join를 사용하여 포함해야하는 경우

답변

1
select c.project_number, c.project_name, sum(do.qty * do.Unit_price) 
from XYZ_PROJECTS c 
join XYZ_INVOICES i 
    on c.PROJECT_NUMBER = i.PROJECT_NUMBER 
join XYZ_INVOICE_DETAILS do 
    on i.INVOICE_NUMBER = do.INVOICE_NUMBER 
group by c.project_number, c.project_name 

:

select c.project_number, c.project_name, sum(do.qty * do.Unit_price) 
from XYZ_PROJECTS c 
left join XYZ_INVOICES i 
    on c.PROJECT_NUMBER = i.PROJECT_NUMBER 
left join XYZ_INVOICE_DETAILS do 
    on i.INVOICE_NUMBER = do.INVOICE_NUMBER 
group by c.project_number, c.project_name 
+0

안녕 섀넌, 정말 감사합니다. ORA-00933 : SQL 명령이 제대로 종료되지 않았습니다. 첫 번째 명령을 사용하기 때문에 제로 비용 프로젝트를 포함하지 않아도됩니다. \t 나는 무엇을 놓치고 있습니까? –

+0

@StephenLenh, 조인을 망쳤습니다. 나는 그들이 지금 정확하다고 믿는다. –

+0

고마워요 ... 지금 작동합니다 –

관련 문제