MS Access と SQL Server バックエンドを使用して、別のテーブルの Parameter フィールドのグループを基本的に格納するテーブルを 1 つ持っています。
たとえば、TBL_Parameter に格納されているパラメーターがあります: (データの非常に小さなサブセットのみ)
パラメータ 鉄(Fe) 鉄(Fe)-溶存 鉄 (Fe) - 合計
テーブル TBL_ParentParameter は次のようになります。
親子 鉄(Fe) 鉄(Fe)-溶存 鉄 (Fe) 鉄 (Fe)-合計
次に、TBL_ParentParameter に子として含まれていないすべてのパラメーターを、TBL_ParentParameter に含まれているすべてのパラメーターと結合するクエリを作成したいので、次のユニオン クエリを作成しました。
SELECT Parameter, Parameter AS Child
FROM TBL_Parameter
WHERE Parameter NOT IN(SELECT Child FROM TBL_ParentParameter)
UNION
SELECT Parent AS Parameter, Child
FROM TBL_ParentParameter
これにより、次の期待される結果が得られます。
親子 鉄(Fe) 鉄(Fe) 鉄(Fe) 鉄(Fe)-溶存 鉄 (Fe) 鉄 (Fe)-合計
しかし、代わりに次のようになります:
親子 鉄(Fe) 鉄(Fe) 鉄(Fe)-溶解 鉄(Fe)-溶解 鉄 (Fe) - 合計 鉄 (Fe) - 合計
現在、ユニオン クエリ内の各クエリは個別には問題なく機能しますが、ユニオン化すると正しく機能しません。これとまったく同じクエリを SQL サーバーへのパススルー クエリとして直接試してみましたが、問題なく動作しましたが、このクエリに基づいて他のクエリを実行すると、実行に数倍の時間がかかることがわかりました。それで、ここで何が問題なのか誰にもわかりませんか?これは、ある種の MS Access のバグですか? それとも私はこれを間違って見ていますか?
解決済み: これは MS Access のバグのようで、2 つのユニオン サブクエリの順序を逆にすることで問題が修正されました。