Mit LEFT OUTER JOINs könnten Sie 3 Abfragen wie folgt ausführen:-
SELECT vehicles.ID
FROM vehicles
INNER JOIN insurance i1
ON vehicles.ID = i1.vehicle_ID
LEFT OUTER JOIN insurance i2
ON i1.vehicle_ID = i2.vehicle_ID
AND i2.expire > i1.expire
WHERE i2.id IS NULL
AND i1.expire < NOW()
Hier führt es einen Left Outer Join für alle späteren Versicherungsablaufdaten durch und überprüft, ob i2.id NULL ist, um sicherzustellen, dass kein späteres Ablaufdatum gefunden wird, und überprüft dann das gefundene Ablaufdatum, um zu überprüfen, ob es abgelaufen ist.
SELECT vehicles.ID
FROM vehicles
LEFT OUTER JOIN insurance i1
ON vehicles.ID = i1.vehicle_ID
WHERE i1.id IS NULL
Dadurch wird nur überprüft, ob es keinen übereinstimmenden Versicherungsdatensatz gibt
SELECT vehicles.ID
FROM vehicles
INNER JOIN insurance i1
ON vehicles.ID = i1.vehicle_ID
LEFT OUTER JOIN insurance i2
ON i1.vehicle_ID = i2.vehicle_ID
AND i2.expire > i1.expire
WHERE i2.id IS NULL
AND i1.expire >= NOW()
Ähnlich wie bei der ersten Abfrage führt sie einen Left Outer Join für spätere Versicherungsablaufdaten durch und überprüft, ob i2.id NULL ist, um sicherzustellen, dass kein späteres Ablaufdatum gefunden wird, und überprüft dann das gefundene Ablaufdatum, um sicherzustellen, dass es nicht abgelaufen ist .