2012-12-14 21 views
0

我有兩個表,一個用於音樂,一個用於藝術家。音樂有專輯名稱,artistID(外鍵)和releasedate。藝術家有3列,一個是PKID,一個是樂隊名字,另一個是歌手名字。如果是樂隊,樂隊名稱將被填寫,歌手名稱將爲空。反之亦然。以空作爲條件的表視圖

我似乎無法創建一個表格視圖,如果bandname不爲null,則會顯示樂隊名稱,反之亦然。我嘗試了很多不同的方式,包括聲明變量的方法,但沒有編譯過。這是我嘗試過的最新事情。我有點理解發生了什麼問題,但是如果我不能聲明@BandName,我不知道該怎麼指示。

CREATE VIEW MusicWithArtist AS 

    IF B.BandName IS NOT NULL 
     BEGIN 
     SELECT A.Title, A.ReleaseDate, B.BandName 
      FROM Music A, Artist B 
       WHERE A.ArtistID = B.ArtistID 
     END; 
    ELSE 
     BEGIN 
     SELECT A.Title, A.ReleaseDate, B.SingerName 
      FROM Music A, Artist B 
       WHERE A.ArtistID = B.ArtistID 
     END; 
+0

我也不想在這裏使用連接命令 – krikara

+0

您正在使用連接。你只是故意使用這樣一種舊式,MS可能會很快停止支持它。 –

回答

2
CREATE VIEW MusicWithArtist AS 
    SELECT A.Title, A.ReleaseDate, ISNULL(B.BandName,B.SingerName) ArtistName 
     FROM Music A, Artist B 
      WHERE A.ArtistID = B.ArtistID 

你在使用會阻止你使用JOIN環境?自從SQL92以來,Ansi風格的聯接已經被指定,這在很多年前並不好笑。

CREATE VIEW MusicWithArtist AS 
    SELECT A.Title, A.ReleaseDate, ISNULL(B.BandName,B.SingerName) ArtistName 
     FROM Music A 
     JOIN Artist B ON A.ArtistID = B.ArtistID; 
+0

你先生很棒。你似乎總能看到我的問題並在30分鐘內回答他們。至於加入部分,我只是想看看是否可以不加入:) – krikara

+0

這很酷,我也不知道你可以在這裏省略AS。 AS可以在所有情況下完全省略? – krikara

+0

要命名列和表別名,可以省略。爲了定義視圖/功能/程序 - 這是強制性的。 – RichardTheKiwi