SELECT N.ROOM_NUMBER AS "ROOM",
T.SLEEPS AS "SLEEPS",
G.FAMILY_NAME || ',' || G.GIVEN_NAME
FROM ((((A2_GUEST G
JOIN A2_BOOKING B ON (G.GUEST_ID = B.GUEST))
JOIN A2_RESERVATION
JOIN A2_ROOM N ON (N.ROOM_NUMBER = R.ROOM_NUMBER))
JOIN A2_ROOM_TYPE T ON (N.ROOM_TYPE = R.ROOM_TYPE))
ORDER BY 1 ASC
ORA-00905:缺少关键字00905. 00000 -"缺少关键字";*原因:
*行动:Line: 50 Column: 50
SQL新手,试图查询数据库。我可能只是在语法上有点笨,但我将非常感谢任何帮助。
期望得到某一天所有已预订房间的列表,包括房间号和房间可容纳多少人。还有预订客人的姓名和预订的日期。
- 您不需要在连接周围加上括号(它们不是无效语法如果你要确保每个大括号都有一个匹配的大括号[你的大括号没有],但是,在这种情况下,它们不会给查询添加任何东西,除了混淆)。
- 您没有
R
别名(可能在A2_RESERVATION
表上)。 - 不为
A2_RESERVATION
表指定JOIN
条件(使用INNER JOIN
并包含ON
子句或使用CROSS JOIN
)。
类似:
SELECT N.ROOM_NUMBER AS ROOM,
T.SLEEPS,
G.FAMILY_NAME || ',' || G.GIVEN_NAME
FROM A2_GUEST G
INNER JOIN A2_BOOKING B ON G.GUEST_ID = B.GUEST
CROSS JOIN A2_RESERVATION R
INNER JOIN A2_ROOM N ON N.ROOM_NUMBER = R.ROOM_NUMBER
INNER JOIN A2_ROOM_TYPE T ON N.ROOM_TYPE = R.ROOM_TYPE
ORDER BY 1 ASC
或:
SELECT N.ROOM_NUMBER AS ROOM,
T.SLEEPS,
G.FAMILY_NAME || ',' || G.GIVEN_NAME
FROM A2_GUEST G
INNER JOIN A2_BOOKING B ON G.GUEST_ID = B.GUEST
INNER JOIN A2_RESERVATION R ON R.something = B.something
INNER JOIN A2_ROOM N ON N.ROOM_NUMBER = R.ROOM_NUMBER
INNER JOIN A2_ROOM_TYPE T ON N.ROOM_TYPE = R.ROOM_TYPE
ORDER BY 1 ASC