Hallo,
ich stolpere nur so leidlich SQL, also sorry, falls meine Frage einfaeltig ist.
In meiner supertollen Applikation, dem Sportwagen-Manager, habe ich eine Tabelle ‚cars‘ mit meinen Autos und eine weitere ‚drivers‘ mit den Fahrernamen. In beiden Tabellen ist eine eindeutige numerische ID vorhanden. In einer weiteren Tabelle ‚car_driver_rel‘ verknuepfe ich per IDs diejenigen Fahrer, die ein jeweiliges Auto fahren duerfen. (Zwischenfrage: macht man das eigentlich so? Oder sollte man solche nm-Relationen anders abbilden?)
Jetzt der knifflige Teil: ich moechte einfuegen, dass all diejenigen Fahrer, die sowieso schon den Ferrari fahren duerfen das auch mit dem Porsche duerfen. Also waeren
mysql\> select (select id from cars where name = "Porsche") as carid, driverid from car\_driver\_rel where carid = (select id from cars where name = "Ferrari");
+-------+----------+
| carid | driverid |
+-------+----------+
| 1874 | 11 |
| 1874 | 21 |
| 1874 | 50 |
| 1874 | 80 |
| 1874 | 82 |
| 1874 | 90 |
| 1874 | 105 |
| 1874 | 109 |
| 1874 | 111 |
| 1874 | 133 |
+-------+----------+
10 rows in set (0.00 sec)
die Daten, die ich einfuegen muesste. Gesagt, getan:
mysql\> insert into car\_driver\_rel (carid, drivreid) values (select (select id from cars where name = "Porsche") as carid, driverid from car\_driver\_rel where carid = (select id from cars where name = "Ferrari"));
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select (select id from cars where name = "Porsche"), driverid from dri' at line 1
Hm, MySQL ist da wohl anderer Meinung. Was mache ich falsch? Geht das so gar nicht? Muss ich fuer jedes Wertepaar nochmal ein SELECT nach der id vom Porsche reinschreiben? (Was ich ziemlich unelegant empfaende…)
Danke im Voraus,
Gruss vom Frank.