如何对多个连接应用多个选择?

问题描述 投票:0回答:1

我想连接多个表中的列。对于一张表来说连接工作正常

select org.catalog_truck.plate_number as "Госномер грузовика",
shift_id as "ID смены",
trip_id as "ID рейса",
*
from core.monitoring_stages
join org.catalog_truck
on vehicle_id = org.catalog_truck.catalog_truck_id
where gen_id = (SELECT max(gen_id)
FROM core.monitoring_tripmachine_generation
WHERE ready=true and timerange_from > '2024-09-23 00:00:00.000 +0300' and timerange_to < '2024-09-23 23:59:59.000 +0300')
ORDER by dtstart

但是对于两个连接(以及前两行中的两个选择,我有一个错误)

select org.catalog_truck.plate_number as "Госномер грузовика",
select org.catalog_field.name as "Поле погрузки",   <--- select for the second join (error in this line)
shift_id as "ID смены",
trip_id as "ID рейса",
*
from core.monitoring_stages
join org.catalog_truck
on vehicle_id = org.catalog_truck.catalog_truck_id
where gen_id = (SELECT max(gen_id)
from core.monitoring_stages <--- second join
join org.catalog_field cf 
on field_id = org.catalog_field.name
FROM core.monitoring_tripmachine_generation
WHERE ready=true and timerange_from > '2024-09-23 00:00:00.000 +0300' and timerange_to < '2024-09-23 23:59:59.000 +0300')
ORDER by dtstart

错误文字:

SQL 错误 [42601]:错误:“select”处或附近的语法错误 位置:66

错误位置:行:2 位置:65

如何对两个连接应用两个选择?

postgresql inner-join
1个回答
0
投票

您不需要使用多个选择,一旦您连接了两个(或更多)表,您就可以从结果表中选择任何内容,就像您已经对monitoring_stages所做的那样(如果我没有误解您的表模式):

select 
    org.catalog_truck.plate_number as "Госномер грузовика",
    org.catalog_field.name as "Поле погрузки",   -- Second join column
    shift_id as "ID смены",
    trip_id as "ID рейса",
    *
from 
    core.monitoring_stages
join 
    org.catalog_truck 
    on vehicle_id = org.catalog_truck.catalog_truck_id
join 
    org.catalog_field  -- Second table join
    on field_id = org.catalog_field.catalog_field_id
where 
    gen_id = (SELECT max(gen_id)
              FROM core.monitoring_tripmachine_generation
              WHERE ready = true 
              and timerange_from > '2024-09-23 00:00:00.000 +0300' 
              and timerange_to < '2024-09-23 23:59:59.000 +0300')
ORDER by dtstart;
© www.soinside.com 2019 - 2024. All rights reserved.