首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >子查询问题(SQL)

问子查询问题(SQL)
EN

Stack Overflow用户
提问于 2012-10-04 16:37:15
回答 2查看 100关注 0票数 0

我正面临着SQL查询的挑战。基本上,我希望检索开始时间晚于各自传出任务的寄存器。

表格如下所示:

代码语言:javascript
复制
Main Project    Main Link    Name         Start            Outgoing tasks
A               1            A1           02.01.2012       A2   
A               1            A2           01.01.2012       A3

..。

我写的查询是这样的:

代码语言:javascript
复制
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,那么我应该出现在结果中。如果你需要更多的细节,请告诉我。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-04 17:02:25

试一试

代码语言:javascript
复制
 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
票数 1
EN

Stack Overflow用户

发布于 2012-10-04 16:55:14

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

代码语言:javascript
复制
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 ...

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12723400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档