Oracle SQL Developerでこのクエリを実行しようとしています:
SELECT G.Guest_ID, G.First_Name, G.Last_Name
FROM Guest AS G
JOIN Stay AS S ON G.Guest_ID = S.Guest_ID
WHERE G.City = 'Miami' AND S.Room = '222';
ただし、次のエラーが発生します。
ORA-00933: SQL command not properly ended
00933. 00000 - "SQL command not properly ended"
*Cause:
*Action:
Error at Line: 2 Column: 12
2行目に問題は見られず、エラーはあまり説明的ではありません。 as
キーワードと関係があるようです。削除すると、正常に動作します。ただし、クエリを非常に冗長にする必要があります。したがって、as
キーワードを削除せずに、問題が何であっても修正する方法を見つける必要があります。
これは、関連するテーブルの構造です。
CREATE TABLE GUEST
(
GUEST_ID NUMBER NOT NULL,
LAST_NAME VARCHAR2(50 BYTE),
FIRST_NAME VARCHAR2(50 BYTE),
CITY VARCHAR2(50 BYTE),
LOYALTY_NUMBER VARCHAR2(10 BYTE)
);
CREATE TABLE STAY
(
STAY_ID NUMBER NOT NULL,
GUEST_ID NUMBER NOT NULL,
HOTEL_ID NUMBER NOT NULL,
START_DATE DATE,
NUMBER_DAYS NUMBER,
ROOM VARCHAR2(10 BYTE)
);
事前に助けをありがとう。
多くのSQLサーバー(少なくともMsSQL、MySQL、PostrgreSQL)のテーブルエイリアスにAS
を使用できますが、これは常にオプションであり、Oracleでは違法です。
したがって、AS
を削除します。
SELECT G.Guest_ID, G.First_Name, G.Last_Name
FROM Guest G
Oracleでは、テーブルエイリアスのAS
を省略します。
SELECT G.Guest_ID, G.First_Name, G.Last_Name
FROM Guest G
JOIN Stay S ON G.Guest_ID = S.Guest_ID
WHERE G.City = 'Miami' AND S.Room = '222';
これにより、エラーのない出力が得られます。