2016-09-19 4 views
1

지침 조인 : 차량을 보유하고 있지 않습니다 EName 경우오라클 SQL 케이스는, 다른 테이블에 열을 비교하고

  • 열 선택 ENameVehicleName
  • VehicleName NULL을 표시합니다.

관련 SQL 테이블 및 열 :

Table   | Columns 
--------------+------------------------- 
Emp   | EmpNo, EName 
Vehicle  | VehicleId, VehicleName 
EmpVehicle | EmpNo, VehicleId 

나의 현재의 시도는 다음과 같습니다

SELECT Emp.EName, Vehicle.VehicleName 
FROM Emp 
INNER JOIN EmpVehicle ON Emp.EmpNo = EmpVehicle.EmpNo 
INNER JOIN Vehicle ON EmpVehicle.VehicleId = Vehicle.VehicleId 

위의 쿼리는이 EmpVehicle.VehicleIdVehicle.VehicleName 항목과 모든 직원의 이름을 표시한다는 의미에서 작동 하지만 조인이 포함 된 차량이없는 직원 이름을 포함시키는 방법에 대한 단서가 없습니다.

나는 Emp.EmpNo 열의 모든 EmpNo 값이 EmpVehicle.EmpNo 열에 것을있는 나의 위의 질의는 사원 번호 EmpVehicle.EmpNo 컬럼에있는 직원의 이름을 표시 것을 확인할 수 있었다.

Emp.EmpNo의 직원 번호가 EmpVehicle.EmpNo이 아니고 표시되는 VehicleName에 Null을 반환하지 않는 경우를 보는 사례를 작성 하시겠습니까?

답변

3

당신은 LEFT JOININNER JOIN에 일치하지 않는 Emp 테이블에서 데이터를 유지해야합니다

SELECT Emp.EName, Vehicle.VehicleName 
FROM Emp 
LEFT JOIN EmpVehicle 
ON Emp.EmpNo = EmpVehicle.EmpNo 
LEFT JOIN Vehicle 
ON EmpVehicle.VehicleId = Vehicle.VehicleId 
+0

이것은 작동합니다! 죄송합니다. 적절한 결합을 사용하지 않는 것처럼 어리석은 것으로 밝혀졌습니다. NULL 값이 특별히 used NULL에 관계없이 NULL로 설정되지 않았을 때 열이 숨겨진 열을 숨길 것이라고 생각했습니다. 감사합니다! – BrightHalo

0

당신은 그래서 당신은 차량

이없는 EMP를 볼 수 있습니다 조인 왼쪽 사용할 수 있습니다 차량

SELECT Emp.EName 
FROM Emp 
LEFT JOIN EmpVehicle ON Emp.EmpNo = EmpVehicle.EmpNo 
WHERE EmpVehicle.EmpNo is null 
이없는 emp.EName을 선택하기위한
SELECT Emp.EName, Vehicle.VehicleName 
FROM Emp 
LEFT JOIN EmpVehicle ON Emp.EmpNo = EmpVehicle.EmpNo 
LEFT JOIN Vehicle 
ON EmpVehicle.VehicleId = Vehicle.VehicleId 

그리고 EmpVehicle.EmpNo 검사가 null

관련 문제