0

以下のクエリを単一のクエリに単純化するのを手伝ってもらえないかと思っていました。

以下のようなクエリが 10 個あります。それらすべての唯一の違いは、1 から始まり 10 まで続く "Outcoming Task" フィールドです。

SELECT 
S1.[Main Project] AS Company, 
S1.[Main Link] AS Project, 
S1.[Name] AS Milestone, 
S1.[Start] AS MilestoneDueDate, 
S2.[Name] AS Successor, 
S2.[Start] AS SuccessorDueDate

FROM Sheet1 AS S1 INNER JOIN Sheet1 AS S2 ON S1.[Outcoming Task 1] = S2.[ID]

WHERE 
S1.Start >S2.[Start] AND 
S1.[%compl#] <> 100 AND 
(S1.[Task class] <> '***Sammelvorgang' AND S1.[Task class] <> '' AND  S1.[Task class] <> 'M D-Muster') AND 
(S2.[Task class] <> '***Sammelvorgang' AND S2.[Task class] <> '' AND  S2.[Task class] <> 'M D-Muster')

ORDER BY 
S1.[Main Project], 
S1.[Main Link], 
S1.[Name];

これを作成した理由は、DBA がタスク間の接続用のテーブルを作成する代わりに、結果タスク 1、結果タスク 2、結果タスク 3 などの 10 個のフィールドを作成したためです...

すべてのクエリを 1 つのクエリにまとめることができますか? 皆さん、やり方のヒントを教えていただけませんか?

情報: MS-ACCESS 2010

ありがとう、

4

2 に答える 2

0

以下のクエリのようなものを試してください。また、列名にスペースを入れるのはベストプラクティスではないと思います。

SELECT 
    S1.[Main Project] AS Company, 
    S1.[Main Link] AS Project, 
    S1.[Name] AS Milestone, 
    S1.[Start] AS MilestoneDueDate, 
    S2.[Name] AS Successor_Task1, 
    S2.[Start] AS SuccessorDueDate_Task1,

    S3.[Name] AS Successor_Task2, 
    S3.[Start] AS SuccessorDueDate_Task2,   

    ... 3, 4, 5, 6, 7, 8, 9, 10 ...

FROM 
    Sheet1 AS S1 
    LEFT JOIN Sheet1 AS S2 
        ON S1.[Outcoming Task 1] = S2.[ID]

    LEFT JOIN Sheet1 AS S3
        ON S1.[Outcoming Task 2] = S3.[ID]

    ... 3, 4, 5, 6, 7, 8, 9, 10 ...

WHERE 
    S1.Start >S2.[Start] AND 
    S1.[%compl#] <> 100 AND 
    (S1.[Task class] <> '***Sammelvorgang' AND S1.[Task class] <> '' AND  S1.[Task class] <> 'M D-Muster') AND 
    (S2.[Task class] <> '***Sammelvorgang' AND S2.[Task class] <> '' AND  S2.[Task class] <> 'M D-Muster') AND

    (S3.[Task class] <> '***Sammelvorgang' AND S3.[Task class] <> '' AND  S3.[Task class] <> 'M D-Muster')

    ... 3, 4, 5, 6, 7, 8, 9, 10 ...

ORDER BY 
    S1.[Main Project], 
    S1.[Main Link], 
    S1.[Name];
于 2013-03-21T10:49:54.970 に答える
0

UNION クエリが必要なようです。簡単な例を次に示します。

2 つのテーブルがあるとします。

[Table1]
[ID]
AutoNumber [アウトカミング タスク 1] Numeric(Long Integer)
[アウトカミング タスク 2] Numeric(Long Integer)

データ付き

ID  Outcoming Task 1  Outcoming Task 2  
--  ----------------  ----------------  
1   1                 2  
2   1                 3

[タスク]
[ID] オートナンバー
[タスク名] テキスト(255)

データ付き

ID  TaskName
--  --------
1   Task1
2   Task2
3   Task3

クエリ

SELECT t1.[ID], 1 AS [Outcoming Task], t.[TaskName]
FROM [Table1] t1 INNER JOIN [Tasks] t ON t.[ID] = t1.[Outcoming Task 1]
UNION
SELECT t1.[ID], 2 AS [Outcoming Task], t.[TaskName]
FROM [Table1] t1 INNER JOIN [Tasks] t ON t.[ID] = t1.[Outcoming Task 2]

生産します

ID  Outcoming Task  TaskName
--  --------------  --------
1   1               Task1
1   2               Task2
2   1               Task1
2   2               Task3
于 2013-03-21T10:56:15.233 に答える