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 布局或样本数据,这只是一个猜测。
为了解释我的问题,假设我正在造车。在我的数据库中,汽车是由零件(发动机、底盘、车轮)制成的。每个部分都有一个物理位置(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 布局或样本数据,这只是一个猜测。