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