使用在同一查询中的查询中检索的外键从其他表返回值

时间:2013-09-16 19:39:33

标签: sql sql-server

我已经构建了一个查询:

SELECT [Hours], TaskId FROM DailyTaskHours 
WHERE PointPerson = 'Dave Smith (smithd)' 
AND ActivityDate Between Cast('1/01/13 12:01:01' As DateTime) 
AND Cast('2/01/13 12:01:01' as DateTime)

这将返回所有小时以及他们结算的相关taskId。 TaskId是Task表的forign键。作为同一个查询的一部分,我想返回一个名为Name的列和一个名为StoryId的列,该列位于Task表中。我该如何做到这一点?

1 个答案:

答案 0 :(得分:1)

这应该做:

SELECT  D.[Hours], 
        D.TaskId,
        T.[Name],
        T.StoryId
FROM DailyTaskHours D
INNER JOIN Task T
    ON D.TaskId = T.TaskId
WHERE D.PointPerson = 'Dave Smith (smithd)' 
AND D.ActivityDate Between Cast('1/01/13 12:01:01' As DateTime) 
AND Cast('2/01/13 12:01:01' as DateTime)

但是你应该总是明确地写出你正在使用的日期时间格式(CONVERT(DATETIME,Date,Format),以及整年。在你的情况下,是'2/01/13' 2013年1月2日,2013年2月1日,1913年1月2日?等等。另外,在查询BETWEEN数据类型时,尽量避免使用DATETIME({{3} })