2015-12-06 49 views
1

因此,對於上下文,這是我如何安排信息:如果事件是電影,請列出流派。如果該事件是一個戲劇 - 列出作者的名字。第四列將被稱爲'體裁/作者'。如何通過SELECT語句將兩個不同表中的記錄放入一列中?

電影是一張桌子,而Play是一張桌子。

我現在沒有如何列出各自的信息,而沒有查詢結果是分開或不返回任何東西。

這是我曾嘗試:

SELECT E.EventName, 
    V.VenueID, 
    E.Description, 
    (M.Genre AND P.Author) as 'Genre/Author' 
    FROM (Event as E LEFT OUTER JOIN Venue as V 
     ON E.VenueID = V.VenueID) 
     LEFT OUTER JOIN 
     Movie as M ON E.EventCode = M.EventCode 
     LEFT OUTER JOIN 
     Play as P ON E.EventCode = P.EventCode; 

當該查詢返回的記錄,在「類型/作者」一欄說:「0」的路線。

SELECT E.EventName, 
    V.VenueID, 
    E.Description, 
    M.Genre as Genre, 
    P.Author as Author 
    FROM (Event as E LEFT OUTER JOIN Venue as V 
     ON E.VenueID = V.VenueID) 
     LEFT OUTER JOIN 
     Movie as M ON E.EventCode = M.EventCode 
     LEFT OUTER JOIN 
     Play as P ON E.EventCode = P.EventCode; 

上面的查詢返回了正確的信息,但我想將流派和作者合併成一列。有小費嗎?

回答

2

您可以使用case根據事件名稱選擇所需的列。根據表中的數據更改條件。此外,對於所有其他事件名稱,此列將爲null

SELECT E.EventName, 
V.VenueID, 
E.Description, 
case when e.eventname = 'Movie' then M.Genre 
    when e.eventname 'Play' then P.Author 
end as Genre/Author 
FROM Event as E 
LEFT OUTER JOIN Venue as V ON E.VenueID = V.VenueID 
LEFT OUTER JOIN Movie as M ON E.EventCode = M.EventCode 
LEFT OUTER JOIN Play as P ON E.EventCode = P.EventCode 
+0

所以,我沒有使用過的情況下,所以我不是很熟悉它。 當我嘗試使用大小寫語法時,查詢返回NULL爲整個列。 但我認爲這是正確的軌道,電影和播放是不是事件表的一部分單獨的表。所以我需要找到一種方式來顯示事件是電影還是戲劇。 – SSW

相關問題