说明:
EName
和VehicleName
EName
不拥有车辆,请将空显示为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
条目,但我不知道如何包含没有涉及联接的车辆的员工姓名。
我能够确定EmpNo
列中的所有Emp.EmpNo
值都不在EmpVehicle.EmpNo
列中,并且我的上述查询仅显示员工编号为在EmpVehicle.EmpNo
列。
您如何编写一个案例,查看列Emp.EmpNo
中的员工编号是否不在列EmpVehicle.EmpNo
中,以及在显示的VehicleName
中是否未返回Null?
答案 0 :(得分:3)
您应该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
答案 1 :(得分:0)
您可以使用左连接,这样您就可以看到没有车辆的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为空,以选择没有车辆的emp.EName
SELECT Emp.EName
FROM Emp
LEFT JOIN EmpVehicle ON Emp.EmpNo = EmpVehicle.EmpNo
WHERE EmpVehicle.EmpNo is null