سؤال

ولدي جدولين الخلية، واحدة تحتوي على تفاصيل عن السيارات واحدة تحتوي على جميع النماذج الممكنة للسيارات، بصفتها هذه:

cars:
  car_id
  model
  [more details]

models:
  model_id
  model_name

والآن، مشكلتي هي أن تفاصيل نموذج المخزنة في الجدول 'السيارات' هي MODEL_NAME، بدلا من MODEL_ID وهو ما أريد

وانا التخمين انا بحاجة الى بعض نوع من الجدول UPDATE العودية لتكون قادرة على تحديث cars.model، ولكن ذهني وتوقفت عن العمل ولا يمكن معرفة كيفية القيام بذلك. هل لديها أي تلميحات بشأن كيفية القيام بذلك؟

وبفضل أي شخص يمكن أن تساعد!

هل كانت مفيدة؟

المحلول

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)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top