2017-12-22 16 views
0

Oracle SQLで作業を開始し、左結合を使用しようとしました。次のエラー、plzヘルプを取得します。エイリアス名を使用したSQL LEFT JOIN

select usr_grpid as "usr_role_role_id" 
from users 
left join user_role on users.usr_role_role_id = user_role.usr_role_role_id; 

エラーメッセージ:

ORA-00904: "USERS" "USR_ROLE_ROLE_ID":無効な識別子 00904. 00000 - 。:実は "%sの無効な識別子"

コラムデータは同じですが、最初のテーブルの名前は2番目のテーブルと異なります。

select users.usr_grpid 
from users 
left join user_role on users.usr_grpid = user_role.usr_grpid; 

注: 代わりに実際の列名を使用し、参加の列の別名を使用しないでください - :

+2

代わりに実際の列名を使用し、参加の列の別名を使用しないでください。 – jpw

+0

他の人の言うことに加えて、ジョイン・カラムだけを選択しているのであれば、外部ジョインをするのはちょっと意味がありません。うまくいけば、それはあなたの問題を実証するための単なる例であり、あなたの本当の質問にはもっと多くの列がありますか? – Boneist

答えて

0
select usr_grpid as "usr_role_role_id" 
from `users` 
left join user_role on `users`.usr_role_role_id = user_role.usr_role_role_id; 

または

select usr_grpid as "usr_role_role_id" 
from users usr 
left join user_role on usr.usr_role_role_id = user_role.usr_role_role_id; 
1

はこれを試してみてください。 allianを使用していない他に

-1

は、両方のテーブルを結合するために同じ列を使用しているとして、あなたはまたNATURAL LEFT JOIN

SELECT usr_grpid 
FROM users 
NATURAL LEFT JOIN user_role; 

を使用することができますが、から指定する各テーブルのalliasを持つことが参考になる、結合条件がありますどのテーブルで値を取得しますか。このような

何か:

SELECT a.usr_grpid 
FROM users a 
NATURAL LEFT JOIN user_role b; 
+2

自然な結合を使用しないことをお勧めします。これは、他のテーブルの列のいずれかと名前を共有しているテーブルの1つに列が追加された場合、結合条件が変更されることを意味します。さらに、頭の上からテーブルの構造を知らなくても、クエリを理解しにくくすることができます。 – Boneist