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])

エラーは返されませんが、期待した結果が得られないだけです。

何が悪いのか知っていますか?どんなサポートも大歓迎です!!!

詳細情報:

このテーブルは、アプリケーションのようなMSProjectからのものです。つまり、マイルストーン、そのデータ、後継者、および前任者があります。私が実際に必要としているのは、後継者よりも後の開始日を持つマイルストーンのリストです(これはプロジェクト管理の観点からのエラーです)。したがって、A1.Start> A2.Startの場合、結果にiが表示されます。さらに詳しい情報が必要な場合はお知らせください。

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外側のクエリのテーブルにのエイリアスを指定し、内側のクエリのテーブルにのエイリアスを指定していることに注意してくださいbarWHERE次に、ネストされた(内部)クエリの述語で外部テーブルを参照できます。... AND bar.name = foo.outgoing_tasks ...

于 2012-10-04T08:55:14.393 に答える