0

以下の SQL クエリを (Access DB で) 実行しようとしていますが、型の不一致エラーが発生します。

SELECT S1.[Main Project] AS Company, S1.[Main Link] AS Project, S1.[Name] AS Milestone, S1.[Start] As MilestoneDueDate, 
S2.[Name] As Successor1, S2.[Start] as SuccessorDueDate1, 
S3.[Name] As Successor2, S2.[Start] as SuccessorDueDate2, 
S4.[Name] As Successor3, S2.[Start] as SuccessorDueDate3, 
S5.[Name] As Successor4, S2.[Start] as SuccessorDueDate4, 
S6.[Name] As Successor5, S2.[Start] as SuccessorDueDate5, 
S7.[Name] As Successor6, S2.[Start] as SuccessorDueDate6, 
S8.[Name] As Successor7, S2.[Start] as SuccessorDueDate7, 
S9.[Name] As Successor8, S2.[Start] as SuccessorDueDate8, 
S10.[Name] As Successor9, S2.[Start] as SuccessorDueDate9, 
S11.[Name] As Successor10, S2.[Start] as SuccessorDueDate10

FROM ((((((((((Sheet1 AS S1 
INNER JOIN Sheet1 AS S2 
ON S1.[Outcoming Task 1] = S2.[ID])
INNER JOIN Sheet1 AS S3 
ON S1.[Outcoming Task 2] = S3.[ID])
INNER JOIN Sheet1 AS S4 
ON S1.[Outcoming Task 3] = S4.[ID])
INNER JOIN Sheet1 AS S5 
ON S1.[Outcoming Task 4] = S5.[ID])
INNER JOIN Sheet1 AS S6 
ON S1.[Outcoming Task 5] = S6.[ID])
INNER JOIN Sheet1 AS S7 
ON S1.[Outcoming Task 6] = S7.[ID])
INNER JOIN Sheet1 AS S8 
ON S1.[Outcoming Task 7] = S8.[ID])
INNER JOIN Sheet1 AS S9 
ON S1.[Outcoming Task 8] = S9.[ID])
INNER JOIN Sheet1 AS S10 
ON S1.[Outcoming Task 9] = S10.[ID])
INNER JOIN Sheet1 AS S11
ON S1.[Outcoming Task 10] = S11.[ID])

WHERE S1.Start >S2.[Start]
OR S1.Start >S3.[Start]
OR S1.Start >S4.[Start]
OR S1.Start >S5.[Start]
OR S1.Start >S6.[Start]
OR S1.Start >S7.[Start]
OR S1.Start >S8.[Start]
OR S1.Start >S9.[Start]
OR S1.Start >S10.[Start]
OR S1.Start >S11.[Start]

ORDER BY S1.[Main Project] 

内部結合を正しく使用していますか?

私はこのテーブルがひどいことを知っています (実際、それを開発した人は関係シップ テーブルを作成する必要がありました) が、それは :(

それを解決するよりエレガントな方法はありますか?

ありがとう!

4

1 に答える 1

1

型の不一致は、Access が異なる型の 2 つのものを比較しようとしていることを示しています。おそらく、20 個の比較ステートメントの 1 つまたは複数が原因です。次のような単純なクエリを使用して、このエラーを再現することをお勧めします。

select 1 from Sheet1 as S1 inner join Sheet1 as S2
   on S1.[Outcoming Task 1] = S2.[ID];

タイプの不一致がどこにあるかがわかるまで、この方法でさまざまなフィールドをテストします。

よりエレガントなソリューションに関しては、何をしようとしているのかによって異なります。このクエリの目的の説明で質問を更新すると、より良い解決策を提供できます。

このデータでかなりの量の作業を行う必要がある場合は、できるだけ早く不適切な形式からデータを取り出すことをお勧めします。ソース ファイルを再構築できれば、すばらしいことです。そうでない場合でも、論理的な方法でフォーマットされた独自の一時テーブルを作成し、それらを使用して必要な作業を行うことは価値があるかもしれません。

于 2012-12-12T13:55:15.963 に答える