web-dev-qa-db-ja.com

「as」キーワードを使用してOracleのテーブルにエイリアスを設定する方法

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)
);

事前に助けをありがとう。

15
Marcos

多くのSQLサーバー(少なくともMsSQL、MySQL、PostrgreSQL)のテーブルエイリアスにASを使用できますが、これは常にオプションであり、Oracleでは違法です。

したがって、ASを削除します。

SELECT G.Guest_ID, G.First_Name, G.Last_Name
FROM Guest G
21
Denys Séguret

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';

これにより、エラーのない出力が得られます。

0
Kokila Mohan