sql >> Database teknologi >  >> RDS >> Mysql

MYSQL INNER JOIN for at få 3 typer resultater

Ved at bruge LEFT OUTER JOINs kan dine 3 forespørgsler udføres som:-

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()

Her laver den en venstre ydre joinforbindelse for eventuelle senere forsikringsudløbsdatoer, og kontrollerer, om i2.id er NULL for at sikre, at der ikke findes en senere udløbsdato, og kontrollerer derefter den fundne udløbsdato for at kontrollere, at den er udløbet.

SELECT vehicles.ID 
FROM vehicles 
LEFT OUTER JOIN insurance i1 
ON vehicles.ID = i1.vehicle_ID 
WHERE i1.id IS NULL

Dette tjekker blot, at der ikke er nogen matchende forsikringsjournal

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()

Meget lig den første forespørgsel laver den en venstre ydre joinforbindelse for eventuelle senere forsikringsudløbsdatoer, og kontrollerer, om i2.id er NULL for at sikre, at der ikke findes en senere udløbsdato, og tjekker derefter den fundne udløbsdato for at kontrollere, at den ikke er udløbet .



  1. OPRET TABEL new_table_name SOM old_table_name med old_table_names AUTO_INCREMENT-værdier

  2. SQL-opdatering, slet og indsæt på samme tid

  3. Importer BLOB (billede) fra orakel til bikube

  4. Hvordan laver man sql join-forespørgsel i laravel 5?