我有两个表格。
cars:包含关于汽车的层级数据。
现在,我们的想法是创建第三个表 cars_new,该表基于 cars 和 car_mapping 进行操作,以去除重复数据并根据 car_mapping 表中的
+-----+-------------+-----------+
| id | description | parent_id |
+-----+-------------+-----------+
| 1 | All cars | 1 |
| 30 | Toyota | 1 |
| 34 | Yaris | 30 |
| 65 | Yaris | 30 |
| 87 | Avensis | 30 |
| 45 | Avensis | 30 |
| 143 | Skoda | 1 |
| 199 | Octavia | 143 |
| 12 | Yeti | 143 |
+-----+-------------+-----------+
car_mapping: 包含映射数据,其中重复的汽车(具有不同的id)被映射到一个id。
+--------+----------+--------+
| car_id | car_name | map_id |
+--------+----------+--------+
| 34 | Yaris | 1 |
| 65 | Yaris | 1 |
| 87 | Avensis | 2 |
| 45 | Avensis | 2 |
| 199 | Octavia | 3 |
| 12 | Yeti | 4 |
| 30 | Toyota | 5 |
| 143 | Skoda | 6 |
| 1 | All cars | 0 |
+--------+----------+--------+
现在,我们的想法是创建第三个表 cars_new,该表基于 cars 和 car_mapping 进行操作,以去除重复数据并根据 car_mapping 表中的
map_id
字段重新确定 cars 表中的层次结构关系。以下就是最终结果:cars_new。+--------+----------+---------------+
| map_id | car_name | parent_map_id |
+--------+----------+---------------+
| 0 | All | 0 |
| 1 | Yaris | 5 |
| 2 | Avensis | 5 |
| 3 | Octavia | 6 |
| 4 | Yeti | 6 |
| 5 | Toyota | 0 |
| 6 | Skoda | 0 |
+--------+----------+---------------+
这里是有关此问题的SQL Fiddle。您有什么想法来重新设计此层次结构的键值?