Это мои схемы:
CREATE TABLE CUSTOMER
(
customerID numeric,
name text,
email varchar(320),
cell varchar,
address varchar,
flag text NULL,
PRIMARY KEY(customerID)
);
CREATE TABLE REFERRALS
(
customerID numeric NOT NULL,
name text NOT NULL,
PRIMARY KEY(customerID, name)
);
CREATE TABLE RENTAL
(
customerID numeric NOT NULL,
model numeric NOT NULL,
borrowDate timestamp NOT NULL,
dueDate date NOT NULL,
charge money NOT NULL,
returnDate timestamp NULL,
addFees money NULL,
notes text NULL,
PRIMARY KEY(customerID, model, borrowDate)
);
CREATE TABLE SCOOTER
(
model bigserial NOT NULL,
manufacturer text NOT NULL,
country text NOT NULL,
range numeric NOT NULL,
weight numeric NOT NULL,
topspeed numeric NOT NULL,
condition text NOT NULL,
availability text NOT NULL,
PRIMARY KEY(model)
);
Для первого запроса я хочу показать столбцы модели и производителя из SCOOTER
, столбец имени из CUSTOMER
и столбец dueDate из RENTAL
, но только для строк, где SCOOTER.model = RENTAL.model
и RENTAL.returnDate is NULL
.И, наконец, в порядке убывания по дате.
Это запрос, который я написал:
SELECT
s.model, s.manufacturer, c.name, r.duedate
FROM
SCOOTER AS s, CUSTOMER AS c
INNER JOIN
RENTAL AS r ON r.model = s.model AND r.returnDate IS NULL
ORDER BY
r.duedate DESC;
Однако я получаю эту ошибку:
СОВЕТ: есть запись для таблицы "s", нона него нельзя ссылаться из этой части запроса.
ЗАЯВЛЕНИЕ: ВЫБЕРИТЕ s.model, s.manufacturer, c.name, r.duedate ОТ СКУТЕРА КАК s, ЗАКАЗЧИК КАК ВНУТРЕННИЙ ВМЕСТЕ АРЕНДА КАК r ON r.model =s.model AND r.returnDate имеет значение NULL ORDER BY r.duedate desc;
ОШИБКА: недопустимая ссылка на запись предложения FROM для таблицы "s"
ЛИНИЯ 2: ВНУТРЕННЯЯ АРЕНДА В АРЕНДУ, КАК r ON r.model = s.model AND r.returnDate ...
^ СОВЕТ: есть запись для таблицы "s", но на нее нельзя ссылаться из этой части запроса.