2017-04-05 79 views
0

這是我的看法到視圖添加新列SQL

CREATE VIEW seat_availability AS 
SELECT flightid,flightdate, maxcapacity, 
FROM flight 

我要添加2個名爲「bookedseats」和「availableseats」,這不以任何表存在,但列新列我需要補充。

我做我的研究在網上,有人說你可以通過使用改變觀點:

ALTER VIEW 

而且有人說,你不能做到這一點,必須從你剛剛視圖編輯創建。

我已經試過這樣:

CREATE VIEW seat_availability AS 
SELECT flightid,flightdate, maxcapacity, bookedseats varchar(10), availableseats varchar(10) 
FROM flight 

這給了這個錯誤:

ERROR: syntax error at or near "varchar" LINE 2: ...ECT flightid,flightdate, maxcapacity, bookedseats varchar(10...

我也試過ALTER VIEW:

ALTER VIEW seat_availability AS 
SELECT flightid,flightdate, maxcapacity, bookedseats varchar(10), availableseats varchar(10) 
FROM flight 

而且我得到了這個錯誤:

ERROR: syntax error at or near "AS" LINE 1: ALTER VIEW seat_availability AS

如果它們存在於其他表中,那麼添加列會很容易,但是因爲我需要添加2列,而這些列在任何表中都不存在,所以很難做到。如果有人可以幫助它將非常感激。謝謝。

也許我可能需要放棄視圖?並重新開始添加兩個新列,但是如何添加它們,因爲它們不存在於我的數據庫中的任何表中?

+0

顯然我的回答不是你要找的。但是,沒有人能真正幫到這裏,因爲這沒有意義。您可以將硬編碼值作爲新列添加到您的視圖中。也許你需要嘗試解釋你想要完成的事情。 –

回答

1

您沒有定義像那樣的列的數據類型。你讓視圖像這樣使用底層數據類型。

ALTER VIEW seat_availability AS 
SELECT flightid 
    , flightdate 
    , maxcapacity 
    , bookedseats 
    , availableseats 
FROM flight 

或者,如果您需要顯式更改數據類型,則需要像這樣使用CONVERT。

ALTER VIEW seat_availability AS 
SELECT flightid 
    , flightdate 
    , maxcapacity 
    , bookedseats = convert(varchar(10), bookedseats) 
    , availableseats = convert(varchar(10), availableseats) 
FROM flight 
+0

噢,好的謝謝,但是如果他們不存在於表格中,我該如何將視圖添加到視圖中?我試過了你的解決方案,並且我收到了一個錯誤,提示我預計的「bookingseats不存在」 –

+0

如果列表不存在於你的基表中,那麼你期望的值是什麼?這只是沒有任何意義。 –