sql外连接在前1个查询上

时间:2011-11-17 18:21:34

标签: sql

我有两张桌子,节目和活动。我想要做的是为每个节目获得最接近的即将到来的活动。但是,有可能程序可能没有附加事件或只有过去发生的事件,但我仍然需要程序显示事件日期的空值,而不是消失。所以我开始实现一个基于我用Google搜索的外部连接,并找到外部应用。

问题似乎是我无法访问事件中的任何列,导致错误'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

1 个答案:

答案 0 :(得分: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()