[英]Oracle SQL Cases, Comparing Columns in Different Tables and Joins
說明:
EName
和VehicleName
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.VehicleId
和Vehicle.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.