mysql rekursive Update
-
07-07-2019 - |
Frage
Ich habe zwei MySQL-Tabellen, eine mit Details auf Autos und man alle möglichen Modelle der Autos, die als solche:
cars: car_id model [more details] models: model_id model_name
Nun, mein Problem ist, dass das Modell in der ‚Autos‘ Tabelle gespeichert Details der model_name ist, anstatt die MODEL_ID das ist, was ich will
Ich vermute, ich irgendeine Art von rekursiven UPDATE Tabelle müssen cars.model in der Lage sein zu aktualisieren, aber mein Gehirn aufgehört zu arbeiten und kann nicht herausfinden, wie es zu tun. Hat jemand irgendwelche Hinweise darauf haben, wie dies geschehen würde?
Danke an alle, die helfen können!
Lösung
mysql> create table cars(car_id int auto_increment primary key, model varchar(50), model_id int); Query OK, 0 rows affected (0.01 sec) mysql> create table models(model_id int auto_increment primary key, name varchar(50)); Query OK, 0 rows affected (0.01 sec) mysql> insert into models(name) VALUES ('Taurus'), ('Ka'), ('Mustang'); Query OK, 3 rows affected (0.00 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> insert into cars(model) VALUES ('Ka'), ('Mustang'), ('Taurus'), ('F150'); Query OK, 4 rows affected (0.00 sec) Records: 4 Duplicates: 0 Warnings: 0 mysql> select * from cars; +--------+---------+----------+ | car_id | model | model_id | +--------+---------+----------+ | 1 | Ka | NULL | | 2 | Mustang | NULL | | 3 | Taurus | NULL | | 4 | F150 | NULL | +--------+---------+----------+ 4 rows in set (0.00 sec) mysql> select * from models; +----------+---------+ | model_id | name | +----------+---------+ | 1 | Taurus | | 2 | Ka | | 3 | Mustang | +----------+---------+ 3 rows in set (0.00 sec) mysql> update cars,models set cars.model_id = models.model_id where models.name = cars.model; Query OK, 3 rows affected (0.06 sec) Rows matched: 3 Changed: 3 Warnings: 0 mysql> select * from cars; +--------+---------+----------+ | car_id | model | model_id | +--------+---------+----------+ | 1 | Ka | 2 | | 2 | Mustang | 3 | | 3 | Taurus | 1 | | 4 | F150 | NULL | +--------+---------+----------+ 4 rows in set (0.03 sec)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow