문제

자동차에 대한 세부 사항이 포함 된 하나는 MySQL 테이블과 다음과 같이 가능한 모든 자동차 모델이 포함되어 있습니다.

cars:
  car_id
  model
  [more details]

models:
  model_id
  model_name

이제 내 문제는 'Cars'테이블에 저장된 모델 세부 사항이 내가 원하는 Model_id가 아닌 Model_name이라는 것입니다.

자동차를 업데이트 할 수있는 일종의 재귀 업데이트 테이블이 필요하다고 생각하지만, 모드 모델이지만 내 뇌가 작동을 멈추고 어떻게 해야하는지 알 수 없습니다. 누구 든지이 작업이 어떻게 될지에 대한 힌트가 있습니까?

도울 수있는 사람에게 감사합니다!

도움이 되었습니까?

해결책

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