SQL LEFT JOIN 多个 table 包括每个连接的 link 到 1 table

SQL LEFT JOIN multiple tables including link to 1 table for each join

为了解释我的问题,假设我正在造车。在我的数据库中,汽车是由零件(发动机、底盘、车轮)制成的。每个部分都有一个物理位置(part_location 来自 table 个位置),通过 (part_location = location_id).

链接

在我的例子中,每个部分只有 1 个,每个部分都是独一无二的

在我的查询中,我试图在一个查询中组装我的汽车,包括每个部分的城市和国家(不是 id)

我的查询开头:

SELECT car_name, car_type, engine_name, engine_type, chassis_name, chassis_type, wheel_name, wheel_type
FROM cars
LEFT JOIN engines ON car_id = engine_car_id
LEFT JOIN chassis ON car_id = chassis_car_id 
LEFT JOIN wheels ON car_id = wheel_car_id

如何包含每个部分的位置(例如 car_city、car_country;location_city、location_country 中每个部分的别名)?

我的table设置如下:

Table cars
    car_id
    car_name
    car_type

Table engines (same for chassis, wheels)
    engine_id
    engine_name
    engine_type
    engine_car_id
    engine_location_id

Table locations
    location_id
    location_city
    location_country

我认为您的查询背后的想法是正确的。你应该用明确的别名来写它,所以我希望是这样的:

SELECT c.car_name, c.car_type, e.engine_name, e.engine_type, 
       ch.chassis_name, ch.chassis_type,
       w.wheel_name, w.wheel_type,
       el.city as engine_city
FROM cars c LEFT JOIN
     engines e
     ON e.car_id = c.engine_id LEFT JOIN
     chassis ch
     ON ch.car_id = c.chassis_id LEFT JOIN
     wheels w
     ON w.wheel_car_id = c.car_id LEFT JOIN
     locations el
     ON el.location_id = e.location_id

但是,如果没有 table 布局或样本数据,这只是一个猜测。