Задача на SQL ошибка "недопустимый идентификатор"
Выберите все поезда (название станций начала и конца маршрута) на которых от станции «Царицыно» можно доехать до станции «Москва-Курская».
CREATE TABLE price (
id INTEGER NOT NULL,
num_of_z INTEGER NOT NULL,
ticket_price INTEGER NOT NULL,
discounted_tickets INTEGER NOT NULL
);
ALTER TABLE price ADD CONSTRAINT price_pk PRIMARY KEY ( id );
ALTER TABLE price ADD CONSTRAINT price_num_of_z_un UNIQUE ( num_of_z );
CREATE TABLE schedule (
id INTEGER NOT NULL,
train_num INTEGER NOT NULL,
route INTEGER NOT NULL,
train_dir VARCHAR2(15 CHAR) NOT NULL,
schedule_days VARCHAR2(9 CHAR) NOT NULL,
station_id1 INTEGER NOT NULL,
station_id2 INTEGER NOT NULL
);
ALTER TABLE schedule ADD CONSTRAINT schedule_pk PRIMARY KEY ( id );
ALTER TABLE schedule ADD CONSTRAINT schedule_train_num_route_un UNIQUE ( train_num,
route );
CREATE TABLE station (
id INTEGER NOT NULL,
name VARCHAR2(10 CHAR) NOT NULL,
tariff_zone INTEGER NOT NULL
);
ALTER TABLE station ADD CONSTRAINT station_pk PRIMARY KEY ( id );
CREATE TABLE stopover (
id INTEGER NOT NULL,
serial_num_dir INTEGER NOT NULL,
arrival_time VARCHAR2(9 CHAR) NOT NULL,
train_num INTEGER NOT NULL,
"station_pass_(y/n)" VARCHAR2(1 CHAR) NOT NULL,
station_id INTEGER NOT NULL,
schedule_id INTEGER NOT NULL
);
ALTER TABLE stopover
ADD CHECK ( "station_pass_(y/n)" IN ( 'n', 'y' ) );
ALTER TABLE stopover ADD CONSTRAINT stopover_pk PRIMARY KEY ( id );
ALTER TABLE schedule
ADD CONSTRAINT schedule_station_fk FOREIGN KEY ( station_id1 )
REFERENCES station ( id );
ALTER TABLE stopover
ADD CONSTRAINT stopover_schedule_fk FOREIGN KEY ( schedule_id )
REFERENCES schedule ( id );
ALTER TABLE stopover
ADD CONSTRAINT stopover_station_fk FOREIGN KEY ( station_id )
REFERENCES station ( id );
Пробовал сделать:
on (STATION_ID1.shedule_id=STATION_ID2.shedule_id)
where station_pass_(y/n)= n;
Но получил ошибку:
SELECT * FROM STOPOVER STATION_ID1 JOIN STOPOVER STATION_ID2
on (STATION_ID1.shedule_id=STATION_ID2.shedule_id)
where station_pass_(y/n)= n
Error at Command Line : 2 Column : 28
Error report -
SQL Error: ORA-00904: "STATION_ID2"."SHEDULE_ID": недопустимый идентификатор
00904. 00000 - "%s: invalid identifier"```
Ответы (1 шт):
Автор решения: Roman Konoval
→ Ссылка
Имена в которых есть не алфавитно-цифровые символы или которые являются ключевыми словами нужно брать в кавычки, как это у вас уже сделано в определении таблицы. Ну и строковые константы нужно брать в одинарные кавычки.
Измение условие на:
where "station_pass_(y/n)" = 'n'
Так же у вас опечатка в имени колонки: в запросе shedule_id, а должно быть schedule_id.