Menggunakan LEFT OUTER JOINs, Anda 3 pertanyaan dapat dilakukan sebagai:-
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()
Di sini ia melakukan gabungan luar kiri untuk tanggal kedaluwarsa asuransi nanti, dan memeriksa i2.id menjadi NULL untuk memastikan tidak ada tanggal kedaluwarsa yang ditemukan, dan kemudian memeriksa tanggal kedaluwarsa yang ditemukan untuk memeriksanya telah kedaluwarsa.
SELECT vehicles.ID
FROM vehicles
LEFT OUTER JOIN insurance i1
ON vehicles.ID = i1.vehicle_ID
WHERE i1.id IS NULL
Ini hanya memeriksa tidak ada catatan asuransi yang cocok
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()
Sangat mirip dengan kueri pertama, ia melakukan gabungan luar kiri untuk tanggal kedaluwarsa asuransi nanti, dan memeriksa i2.id menjadi NULL untuk memastikan tidak ada tanggal kedaluwarsa yang ditemukan, dan kemudian memeriksa tanggal kedaluwarsa yang ditemukan untuk memeriksanya belum kedaluwarsa .