Ich habe versucht, die Fragen/Antworten anderer SO-Benutzer auf meine Frage zurückzuverfolgen, konnte es aber nicht. JOINS sind mir immer noch ein Rätsel.
Ich habe drei Tabellen: Rennen (eine Liste aller Rennen), Ergebnis (Ergebnisse für jedes Rennen), Fahrer (Fahrerinformationen). Nicht alle Fahrer haben an allen Rennen auf einer bestimmten Strecke teilgenommen.
Renntabelle
| race_id | track_id | year | complete |
+-----------+------------+--------+----------+
| 1 | 1 | 2006 | 1 |
| ... | ... | ... | ... |
| 21 | 1 | 2007 | 1 |
| ... | ... | ... | ... |
| 135 | 1 | 2008 | 1 |
| ... | ... | ... | ... |
| 215 | 1 | 2009 | 1 |
| ... | ... | ... | ... |
| 292 | 1 | 2010 | 1 |
| ... | ... | ... |... |
| 351 | 1 | 2011 | 0 |
+-----------+------------+--------+----------+
Ergebnistabelle
| race_id | driver_id | finish |
+---------+-----------+--------+
| 135 | 1 | 15 |
| ... | ... | ... |
| 292 | 1 | 6 |
+---------+-----------+--------+
Fahrertisch
| driver_id | name |
+-----------+------------+
| 1 | Joe Driver |
+-----------+------------+
Ich möchte eine Ergebnismenge, die zeigt:
| name | race_id | year | finish |
+------------+---------+--------+--------+
| Joe Driver | 21 | 2007 | NULL |
| Joe Driver | 135 | 2008 | 15 |
| Joe Driver | 215 | 2009 | NULL |
| Joe Driver | 292 | 2010 | 6 |
+------------+---------+--------+--------+
Joe Driver nahm nur an 2 der 4 Rennen teil, die nach 2006 auf track_id = 1 stattfanden, und enthält nur Rennen, die vollständig sind (1)
Dies ist meine aktuelle Anfrage:
SELECT driver.driver, race.id, race.year, result.finish
FROM race
LEFT JOIN result ON race.id = result.race_id
LEFT JOIN driver ON result.driver_id = driver.driver_id
WHERE race.track_id = 1
AND race.year > 2006
AND race.complete = 1
AND driver.driver_id = 1
ORDER BY race.id ASC
Das Ergebnis, das ich erhalte, zeigt nur die Rennen an, an denen der Fahrer teilgenommen hat:
| name | race_id | year | finish |
+------------+---------+--------+--------+
| Joe Driver | 135 | 2008 | 15 |
| Joe Driver | 292 | 2010 | 6 |
+------------+---------+--------+--------+
Ich bin sicher, ich übersehe eine einfache Regel für JOINS?
Danke!