2017-11-19 1 views
0

何とか無重複列を持つビューの「重複する列名」エラーが、Oracle 11gのは、私の見解・作成コードで重複する列名があります考えています:Oracle 11gの

Error starting at line : 109 in command - 
CREATE VIEW users_view AS 
    SELECT * FROM users u 
     INNER JOIN states s 
      ON u.state_id = s.state_id 
     INNER JOIN accounts a 
      ON u.account_id = a.account_id 
Error report - 
ORA-00957: duplicate column name 
00957. 00000 - "duplicate column name" 
*Cause:  
*Action: 

どのような方法で解決できますか?

+0

多分あなたは「*を選択」し、列ごとに指定使用しないようにする必要があります。いくつか重複する列名がある場合、エイリアスを使用してください – Mate

答えて

2

明らかに、このクエリは、重複する列があります。重複の中

SELECT * 
FROM users u INNER JOIN 
    states s 
    ON u.state_id = s.state_id INNER JOIN 
    accounts a 
    ON u.account_id = a.account_id 

u.state_ids.state_idu.account_id、およびa.account_idある - 表の別名は無視されます。

各テーブルから必要なすべての列を一覧表示することをお勧めします。ただし、重複が唯一JOIN鍵である場合、ショートカットがある - あなたの代わりにONUSINGを使用することができます。

SELECT * 
FROM users u INNER JOIN 
    states s 
    USING (state_id) INNER JOIN 
    accounts a 
    USING (account_id) 
+0

ニース、そのオラクルのみの構文ですか? –

+0

私が返りたいカラム名のスペルを解答でした。 –

+0

@AbBennett。 。 。いいえ、それはANSI構文ですが、一部のデータベース(SQL Serverが考えている)はサポートしていません。 –