web-dev-qa-db-fra.com

Comment utiliser le mot clé 'as' pour aliaser une table dans Oracle?

J'essaie d'exécuter cette requête dans 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';

Cependant, j'obtiens l'erreur suivante:

ORA-00933: SQL command not properly ended
00933. 00000 - "SQL command not properly ended"
*Cause:
*Action:
Error at Line: 2 Column: 12

Je ne vois aucun problème à la ligne 2 et l'erreur n'est pas très descriptive. Cela semble être quelque chose à voir avec le mot clé as. Si je l'enlève, cela fonctionne bien. Cependant, je veux que mes requêtes soient très verbeuses. Par conséquent, je dois trouver un moyen de résoudre le problème, sans supprimer le mot clé as.

Voici la structure des tables impliquées:

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

Merci d'avance pour toute aide.

11
Marcos

Vous pouvez utiliser AS pour la création d'alias de table sur de nombreux serveurs SQL (au moins MsSQL, MySQL, PostgreSQL), mais il est toujours facultatif et illégal sur Oracle.

Donc, supprimez la AS:

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

Omettez la AS pour l'alias de table dans Oracle.

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

Cela vous donnera la sortie sans erreur.

0
Kokila Mohan