Jojo55: Komplizierte Datenbankabfrage

Beitrag lesen

Hallo zusammen.

Ich versuche schon seit einiger Zeit aus meiner MySQL-Datenbank (v.4.0.24) ganz bestimmte Daten herauszuholen.

Hier erst mal die Tabellen:
[code=SQL]
data_unit Tabelle:
+----+---------+-----------+
| ID | type_id | name      |
+----+---------+-----------+
| 1  | 100     | Spion 1   |
| 2  | 103     | Kl. Tr. 1 |
| 3  | 200     | Spion 2   |
| 4  | 203     | Kl. Tr. 2 |
+----+---------+-----------+

unit Tabelle:
+----+---------+---------+---------+-------+
| ID | type_id | base_id | army_id | speed |
+----+---------+---------+---------+-------+
| 1  | 100     | 3       | NULL    | 87    |
| 2  | 100     | 3       | NULL    | 90    |
| 3  | 103     | 3       | NULL    | 50    |
| 4  | 200     | 3       | NULL    | 103   |
| 5  | 200     | 5       | NULL    | 100   |
| 6  | 100     | NULL    | 5       | 85    |
| 7  | 103     | NULL    | 5       | 83    |
| 8  | 203     | 5       | NULL    | 50    |
+----+---------+---------+---------+-------+
[/code]

So... das waren jetzt erst mal die Tabellen.

Nun zum eigentlichen Problem:
Ich möchte nun alle Zeilen aus der data_unit Tabelle holen, wo die type_id in der unit Tabelle vorkommt. Außerdem muss die base_id = 3 sein und die army_id = NULL. Hinzu kommt noch, dass ich den kleinsten Speed aus der unit Tabelle haben will, der diese type_id hat.

Klingt wohl sehr kompliziert.
Das Ergebnis sollte dann ungefair so aussehen:
[code=SQL]
+---------+-----------+---------+
| type_id | name      | speed   |
+---------+-----------+---------+
| 100     | Spion 1   | 87      |
| 103     | Kl. Tr. 1 | 50      |
| 200     | Spion 2   | 103     |
+---------+-----------+---------+
[/code]

Ich hoffe das kann man irgendwie in einen einzigen SQL-Call reinpacken, aber ich habe schon alles mir bekannte bezüglich JOINS etc. ausprobiert und bin mit meinem Latein am Ende.

Vielleicht könnt ihr mir da helfen :-)