有三个表Vehicle,VehicleGroup和AssignedVehicleGroup,它们具有以下格式:
车辆 - vehicleId,customerId,registration
VehicleGroup - groupId,groupName
AssignedVehicleGroup - vehicleId,groupId
使用此架构可以将车辆放置在多个组中但是我很难编写可以找到的单个查询:
此查询将填充一个列表,允许用户将车辆添加到当前组(如果它尚未位于当前组或任何组中)。
答案 0 :(得分:1)
这将为您提供在指定表格中没有匹配项的车辆列表:
SELECT v.*
FROM vehicle v
LEFT JOIN assignedvehiclegroup ag
ON ag.vehicleid = v.vehicleid
WHERE ag.vehicleid IS NULL
要返回不在当前组中的车辆:
SELECT v.*
FROM vehicle v
LEFT JOIN assignedvehiclegroup ag
ON ag.vehicleid = v.vehicleid
WHERE ag.groupid<=>100
答案 1 :(得分:0)
不在群组查询中通常更难以整理。
没有任何组的车辆:
SELECT v.registration
FROM Vehicle v
LEFT JOIN AssignedVehicleGroup vg ON (v.vehicleId=vg.VehicleId)
WHERE vg.groupId IS NULL
不属于特定群体的车辆:
SELECT v.registration
FROM Vehicle v
LEFT JOIN AssignedVehicleGroup vg ON (v.vehicleId=vg.VehicleId AND vg.groupId = 5)
WHERE vg.groupId IS NULL