Sử dụng LEFT OUTER JOINs, bạn có thể thực hiện 3 truy vấn là:-
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()
Ở đây, nó thực hiện kết nối bên ngoài bên trái cho bất kỳ ngày hết hạn bảo hiểm nào sau này và kiểm tra i2.id là NULL để đảm bảo không tìm thấy ngày hết hạn sau đó, sau đó kiểm tra ngày hết hạn được tìm thấy để kiểm tra xem nó đã hết hạn chưa.
SELECT vehicles.ID
FROM vehicles
LEFT OUTER JOIN insurance i1
ON vehicles.ID = i1.vehicle_ID
WHERE i1.id IS NULL
Điều này chỉ kiểm tra không có hồ sơ bảo hiểm phù hợp
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()
Rất giống với truy vấn đầu tiên, nó thực hiện kết hợp bên ngoài bên trái cho bất kỳ ngày hết hạn bảo hiểm nào sau đó và kiểm tra i2.id là NULL để đảm bảo không tìm thấy ngày hết hạn sau đó và sau đó kiểm tra ngày hết hạn được tìm thấy để kiểm tra xem nó chưa hết hạn. .