0

我正面临 SQL 查询的挑战。基本上我想检索比它们各自的[传出任务]晚呈现[开始]的寄存器。

该表如下所示:

Main Project    Main Link    Name         Start            Outgoing tasks
A               1            A1           02.01.2012       A2   
A               1            A2           01.01.2012       A3

...

我写的查询是这样的:

SELECT [Name], [Start], [Outgoing tasks] 
FROM [Sheet1$] 
WHERE [Main project] = 'A' 
AND [Main link] = '1' 
AND [Outgoing tasks] IS NOT NULL 
AND [Start] > (SELECT [Start] 
        FROM [Sheet1$] 
        WHERE [Main project] = 'A' 
        AND [Main link] = '1' 
        AND [Name] =  [Outgoing tasks])

它不会返回任何错误,但它根本不会带来预期的结果。

你们知道可能出了什么问题吗?非常感谢任何支持!!!

更多信息:

该表来自类似 MS Project 的应用程序。所以我们有一个里程碑,它的数据,继任者和前任者。我真正需要的是一个开始日期晚于其继任者的里程碑列表(从项目管理的角度来看这是一个错误)。因此,如果 A1.Start > A2.Start,那么我应该出现在结果中。如果您需要更多详细信息,请告诉我。

4

2 回答 2

1

尝试

 select t1.* from [$Sheet1] t1
      inner join [$Sheet1] t2
           on t1.[main project] = t2.[main project]
           and t1.[main link] = t2.[main link]
           and t1.[outgoing tasks] = t2.name
           and t1.start>t2.start
于 2012-10-04T09:02:25.107 回答
0

如果这是一个相关的子查询,您需要一种方法来在内部查询中引用外部语句的表。在 MySQL 中,你会这样做:

SELECT name, start, outgoing_tasks FROM sheet1 foo WHERE main_project = 'A' AND main_link = '1' AND outgoing_tasks IS NOT NULL AND start > (SELECT start FROM sheet1 bar WHERE main_project = 'A' AND main_link = '1' AND bar.name = foo.outgoing_tasks);

请注意,我为外部查询的表指定了别名,foo内部查询的表为bar. WHERE然后我可以在嵌套(内部)查询的谓词中引用外部表:... AND bar.name = foo.outgoing_tasks ...

于 2012-10-04T08:55:14.393 回答