Я пытаюсь обновить таблицу с помощью функции и столкнуться с некоторыми проблемами с моим синтаксисом обновлений, было интересно, может ли кто-нибудь помочь указать, где я ошибаюсь.SQL Где со следующими объединениями
Мои полёты стол:
SQL> describe flights
Name Null? Type
----------------------------------------- -------- ------------
AIRLINE VARCHAR2(3)
AIRLINE_ID VARCHAR2(5)
SRC_AIRPORT VARCHAR2(4)
SRC_AIRPORT_ID VARCHAR2(5)
DEST_AIRPORT VARCHAR2(4)
DEST_AIRPORT_ID VARCHAR2(5)
CODESHARE CHAR(1)
STOPS NUMBER(38)
EQUIPMENT VARCHAR2(50)
DISTANCE NUMBER
Мой оператор выбора с функцией не работает без проблем:
SELECT SRC,DEST,calc_distance(lat1,lon1,lat2,lon2)as dist
FROM (Select flights.src_airport as SRC, airports1.Latitude as lat1,
airports1.longitude as lon1,flights.dest_airport as DEST, airports2.Latitude as lat2,
airports2.longitude as lon2 FROM airports airports1 JOIN
flights
ON airports1.iata_faa = flights.src_airport
JOIN
airports airports2
ON airports2.iata_faa = flights.dest_airport);
Где у меня возникли проблемы обновляет таблицу полетов включить вычисление расстояния от этого выберите в соответствующий кортеж в полетах. Что я хочу сделать, так это проверить, что исходные и целевые аэропорты из отборочного заявления равны аэропортам src и destination из таблицы рейсов и соответственно вставляют, но я продолжаю получать проблемы при написании этого заявления.
До сих пор у меня есть:
UPDATE flights f1
SET distance =
(
SELECT DISTINCT calc_distance(lat1,lon1,lat2,lon2)
FROM
(Select f2.src_airport as SRC, airports1.Latitude as lat1,
airports1.longitude as lon1,f2.dest_airport as DEST, airports2.Latitude as lat2,
airports2.longitude as lon2 FROM airports airports1
JOIN
flights f2
ON airports1.iata_faa = f2.src_airport
JOIN
airports airports2
ON airports2.iata_faa = f2.dest_airport
)
)
WHERE
f1.src_airport = f2.src_airport
AND
f1.dest_airport = f2.dest_airport;
Но хранение получаю ошибку:
ERROR at line 20:
ORA-00904: "F2"."DEST_AIRPORT": invalid identifier
Кто-нибудь есть какие-либо идеи, как я мог бы исправить это, я думаю, что вопрос с использованием где заявление вне из объединений.
Возможно, вы используете 'WHERE' вне' SELECT', который не будет работать. Возможно, просто удалите первый открытый палец и близкий палец перед 'WHERE'. –