2015-12-06 13 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

相关问题