簡體   English   中英

Oracle SQL案例,比較不同表和聯接中的列

[英]Oracle SQL Cases, Comparing Columns in Different Tables and Joins

說明:

  • 選擇列ENameVehicleName
  • 如果EName不擁有車輛,則顯示Null作為VehicleName

相關的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列中的員工的EmpVehicle.EmpNo

您如何編寫一個案例,查看Emp.EmpNo列中的員工編號是否不在EmpVehicle.EmpNo列中,並且在顯示的VehicleName是否返回Null?

你應該LEFT JOIN來保持你的Emp表中與INNER JOIN不匹配的數據:

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

您可以使用左連接,這樣您就可以看到沒有車輛的emp

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以選擇沒有車輛的emp.EName

SELECT Emp.EName 
FROM Emp
LEFT  JOIN EmpVehicle ON Emp.EmpNo = EmpVehicle.EmpNo
WHERE EmpVehicle.EmpNo is null 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM