Postgres Требуется помощь при запросе - PullRequest
1 голос
/ 29 марта 2020

Мне было интересно, есть ли лучший способ написать этот конкретный запрос

SELECT flights.id as flightid,
                flights.icao, 
                aircraft.reg_no AS regno,
                starttime,
                endtime,
                originloc.country_code as origincountry,
                originloc.name_en AS originloc,
                destloc.country_code as destcountry,
                destloc.name_en AS destloc,
                (select pings.call from pings where pings.call != 'null' and pings.flightid = flights.id limit 1) as flightcall
                 FROM flights LEFT JOIN localities_sys originloc ON originloc.id = flights.originloc LEFT JOIN localities_sys destloc
                 ON destloc.id = flights.destloc LEFT JOIN aircraft ON aircraft.icao = flights.icao

Если я попытаюсь добавить условие в конце, например

 WHERE flightcall = 'test'

, я получаю ошибку заявляя, что ERROR: column "flightcall" does not exist

Любая помощь с благодарностью

Спасибо Дэмиен

1 Ответ

1 голос
/ 29 марта 2020

Имена в, где предложение не поддерживается в PostgreSQL. Вы должны либо использовать вложенный запрос, либо использовать запрос ниже -

SELECT flights.id as flightid,
       flights.icao, 
       aircraft.reg_no AS regno,
       starttime,
       endtime,
       originloc.country_code as origincountry,
       originloc.name_en AS originloc,
       destloc.country_code as destcountry,
       destloc.name_en AS destloc,
       (select pings.call
        from pings
        where pings.call != 'null'
        and pings.flightid = flights.id
        limit 1) as flightcall
FROM flights
LEFT JOIN localities_sys originloc ON originloc.id = flights.originloc
LEFT JOIN localities_sys destloc ON destloc.id = flights.destloc
LEFT JOIN aircraft ON aircraft.icao = flights.icao
WHERE pings.call = 'test';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...