2014-01-15 19 views
11

私は、Oracle SQL Developerでこのクエリを実行しようとしています:Oracleのテーブルのエイリアスに 'as'キーワードを使用する方法は?

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

感謝。

+0

おそらくあなたはSQLサーバーの経験から来ているでしょう。 SQLサーバとは異なり、Oracle SQLでは、テーブルのエイリアスを作成するには、@ dystroyのようなエイリアス名を使用するだけです。 –

+0

@justCallMeBiruほとんどのシステムでは 'AS 'を使うことができますが、オプションです。 –

+0

テーブルエイリアスの 'AS'キーワードの使用は、ANSI SQL標準ではありません。 –

答えて

17

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

のでASを削除:

SELECT G.Guest_ID, G.First_Name, G.Last_Name 
FROM Guest G 
+0

MSSQLのクエリのように、クエリに 'as'というキーワードを付けることができます。 – Marcos

+2

@Marcos OracleはMSSQLではありません –

+0

Oracleには「as」というキーワードがあります。なぜ私はそれを使用できないのですか? – Marcos

0

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

これはエラーなしで出力を提供します。

関連する問題