2011-11-17 123 views
0

我有两个表,程序和事件。我想要做的是获得每个节目最近的即将到来的事件。然而,有可能一个程序可能没有附加任何事件或者只发生在过去的事件,但我仍然需要程序在事件日期中显示一个空值,而不是离开。所以我开始实施一个外部联接的基础上我google了,发现外部适用。顶部1查询SQL外部连接

问题似乎是我有任何事件列进不去,歌厅错误'Invalid column name 'start_date'.'(出现这种情况与所有三列,而不只是开始日期)

,所以我要么需要了解为什么如果什么都不存在

SELECT 
    p.*, 
    e.type, 
    e.start_date, 
    e.end_date 
FROM 
    program p 
    outer apply (
     select top(1) pk_id from events e where fk_program_id = p.pk_id and end_date >= GetDate() 
    ) e 

回答

0

你,我无法访问这些列,或找出一种新的方式去写返回所有项目的查询,以及加入了最近事件的事件表/离开值空”除了事件中的pk_id之外,不要返回任何列。将其他列添加到您的select语句。 :-)

SELECT TOP(1) p.pk_id, 
       TYPE, 
       start_date, 
       end_date 
FROM events e 
WHERE fk_program_id = p.pk_id 
     AND end_date >= Getdate() 
+0

哦咄。男人,有时它总是小东西​​。我保留了以前的迭代中的查询,之前我意识到我需要外连接。谢谢,我会尽快接受答案。 – Josh