Postgres“错误:语法错误在或附近”但没有明显的语法错误

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

我遇到了一个奇怪的问题。我正在尝试在 PostgreSQL 中创建一个视图,但出现标题中提到的错误。据我所知,我没有任何语法错误,但 Postgres 仍然抛出错误。我做错了什么?

这是我遇到的错误:

ERROR:  syntax error at or near "FROM"
LINE 3: period, start, "end" FROM Periods,

这是我遇到问题的视图和相应的表:

CREATE VIEW ReservationsView AS
SELECT code, date FROM Reservations,
period, start, "end" FROM Periods,
room FROM Rooms,
name FROM Users
FROM Reservations A
INNER JOIN Periods B
ON A.room = B.room
INNER JOIN Rooms C
ON A.room = C.room
INNER JOIN Users D
ON A."user" = D."user"
ORDER BY A.code DESC;
CREATE TABLE Reservations (
    code SERIAL PRIMARY KEY, 
    abbr VARCHAR(5), 
    room INT, 
    date DATE NOT NULL, 
    period CHAR(1), 
    "user" INT, 
    FOREIGN KEY (abbr, room) REFERENCES Rooms (abbr, room), 
    FOREIGN KEY (period) REFERENCES Periods (period),
    FOREIGN KEY ("user") REFERENCES Users ("user")
);

CREATE TABLE Periods (
    period CHAR(1) PRIMARY KEY, 
    start TIME NOT NULL, 
    "end" TIME NOT NULL
);
sql database postgresql select view
1个回答
1
投票

“没有明显的语法错误” :)

CREATE VIEW reservations_view AS
SELECT a.code, a.date
     , b.period, b.start, b."end"
     , c.room
     , d.name
FROM   reservations a
JOIN   periods b USING (room)
JOIN   rooms   c USING (room)
JOIN   users   d ON d."user" = a."user"
ORDER  BY a.code DESC;

开始阅读手册这里.

并且不要使用保留字“用户”作为标识符,那是自找麻烦。使用合法的、小写的、不带引号的名字让你的 Postgres 生活更轻松。参见:

并且不要使用过时的数据类型

char(N)
。参见:

© www.soinside.com 2019 - 2024. All rights reserved.