SQL LEFT JOIN多个表,包括每个连接的1个表的链接

时间:2016-09-24 13:28:15

标签: sql left-join

为了解释我的问题,我可以说我正在制造汽车。在我的DB中,汽车由零件(发动机,底盘,车轮)制成。每个部分都有一个物理位置(来自表位置的part_location),它通过(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 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

1 个答案:

答案 0 :(得分:0)

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

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

但是,如果没有表格布局或样本数据,这只是猜测。