2015-10-29 80 views
0

加入我的數據庫我有這兩個表:如何創建視圖有多個在同一個表

+----+---------+---------+ 
| pk | name | sirname | 
+----+---------+---------+ 
| 1 | john | leno | 
| 2 | william | wallice | 
| 3 | eva  | apple | 
| 4 | walter | white | 
+----+---------+---------+ 

請求

+----+-------------+----------+---------------+---------+---------+ 
| pk | requestdate | accepted | requestperson | parent1 | parent2 | 
+----+-------------+----------+---------------+---------+---------+ 
| 1 | 1/1/2014 | Y  |    1 | 2  | 3  | 
| 2 | 1/2/2014 | N  |    4 | NULL | NULL | 
+----+-------------+----------+---------------+---------+---------+ 

要獲得請求我做的:

SELECT * 
FROM request 
LEFT JOIN person p_subject ON requestperson = p_subject.pk 
LEFT JOIN person p_parent1 ON parent1 = p_parent1.pk 
LEFT JOIN person p_parent2 ON parent2 = p_parent2.pk 

這完美的作品,但是當我想創建一個視圖:

CREATE VIEW v_request AS 
SELECT * 
FROM request 
LEFT JOIN person p_subject ON requestperson = p_subject.pk 
LEFT JOIN person p_parent1 ON parent1 = p_parent1.pk 
LEFT JOIN person p_parent2 ON parent2 = p_parent2.pk 

我得到這個錯誤:ORA-00957: duplicate column name

我不想手動重命名所有列。我怎樣才能解決這個問題?

+0

CREATE VIEW V_REQUEST(cname1,cname2,...),因爲是最簡單的方法。 – jarlh

+0

你一定要列出某個地方的列名;幾乎沒有得到解決。 – Boneist

+1

我在想,重新命名視圖中的列會比寫出問題花費更少的時間....只是說。爲什麼你不想重命名它們?否則,你如何引用正確連接的值? (即哪個sirname列是父輩姓氏與主題姓?) –

回答

2

你的觀點將包括:與列名namepk

  • 三列(這是不是一個很好的列名)
  • 三列

    • 三列,列名與列名sirname

    因爲tablealiases將不會自動前綴(其誤差ORA-00957: duplicate column name國家)

    我相當肯定你將不得不手動重命名爲subject_pk,subject_name,subject_sirname等等。

  • 相關問題