2016-12-27 2 views
-6

오라클 데이터베이스의 많은 테이블 하나에 가입하는 방법 : 주문, 직원, 공급, Supply_company을나는 네 개의 테이블이

한 순서와 일 명하기 위해 많은 공급 장치가 하나 이상의 직원이이 4 개 개의 테이블에서
Order 
------------------ 
Order_id 
Order name 
Emp_id 

Employee 
------------------ 
Emp_id 
Emp_name 

Supply 
-------------------- 
Supply_id 
Order_id 
SupplierName 

Supply_company 
---------------------- 
Supply_company_id 
Supply_id 
Supplier_desc 
address 

ID와 해당 공급 ID에 대해 하나의 공급 업체가 있습니다. Emp_id을 기준으로 Supplier_desc을 표시하고 싶습니다. 나는 모든 주문과 관련된 모든 설명을 얻고 있지만 특정 주문에 대해 구체적인 desc를 얻을 필요가있다. distinct, listagg, inner join 및 left join을 사용하고 where 절에서 하위 쿼리를 사용했지만 어떤 해결책도 찾지 못했다.

SELECT DISTINCT e.EMP_ID, e.EMP_NAME, s.SUPPLIER_DESC 
    FROM EMPLOYEE e 
    INNER JOIN ORDER o 
    ON o.EMP_ID = e.EMP_ID 
    INNER JOIN SUPPLY s 
    ON s.ORDER_ID = o.ORDER_ID 
    INNER JOIN SUPPLY_COMPANY c 
    ON c.SUPPLY_ID = s.SUPPLY_ID 
    WHERE e.EMP_ID = your_emp_id AND 
     o.ORDER_ID = your_order_id 

여기에 우리가 걸어 :

+0

질문을 게시하기 전에 [ask]와 [mcve]를 보시기 바랍니다. – Aleksej

+0

'WHERE Order.Order_id = XXX'를 쿼리에 추가하십시오. – Barmar

+0

질문 7 개, 답변 5 개, 허용되지 않음. 당신이 사이트의 규칙을 follor하지 않으면 사람들이 당신과 협력 기대하지 마십시오. – Kacper

답변

0

SELECT 
    O.EMP_ID,SC.* 
FROM 
    SUPPLY_COMPANY SC 

INNER JOIN 

    SUPPLY S 
    ON S.Supply_id=SC.Supply_id 

INNER JOIN 
    Order O 
    ON O.Order_id=S.Order_id 

WHERE O.Emp_id=123 
+0

질문을 한 사람에게 무엇을 말하려고하는지에 대한 설명이 유용 할 것입니다. 감사. –

0

특정 EMP_ID와 ORDER_ID 다음 쿼리는 당신에게 EMP_NAME를 얻을 것이다, 그 직원 및 순서와 관련된 모든 SUPPLIER_DESCs을 가지고 있다고 가정 EMPLOYEE에서 ORDER 및 SUPPLY를 통해 SUPPLIER_DESC를 찾을 수있는 SUPPLY_COMPANY로 이동 한 다음 WHERE 절을 사용하여 특정 직원 및 주문에 대한 결과를 필터링 할 수 있습니다. 반복 행을 원하지 않으므로 테 선택 기준에 대한 DISTINCT 우리는 각각의 독특한 조합에 대한 단 하나의 예를 원할 것입니다. your_emp_idyour_order_id을 관심있는 EMP_ID 및 ORDER_ID 값으로 바꿉니다. EMP_ID 및 ORDER_ID를 제공하고 EMPLOYEE 및 ORDER 테이블에 공통적 인 내용이없는 경우이 쿼리에서 아무 것도 반환하지 않습니다.

행운을 빈다.