基本的な考え方:特定の部門内に存在するすべてのプロセスの一覧が必要です。プロセスは部門に関連するOperationalUnitsに関連しています。VBA/SQL:ネストされたクエリ、バッフリングデータの不一致
は、クエリは、私がしたい:
SELECT ID, ProcessName FROM Processes WHERE Unit IN (SELECT ID FROM OperationalUnits WHERE Division='1');
これはいつも私に "式の型の不一致" エラーがスローされます。
私は2つのコンポーネントのクエリにダウンクエリを壊すことでテストしてみた:これは私が私のテストデータから何を期待され、単一のID、2を返し
SELECT ID FROM OperationalUnits WHERE Division='1';
。
SELECT ID, ProcessName FROM Processes WHERE Unit IN ('2');
これは私が期待するまさに再び単一のプロセスを返します。
しかし、それらを結合してメインクエリに戻すのであれば、いいえ。問題は内側のクエリが[2]を返し、外側のクエリが['2']を返す場合にのみ機能しますが、それは私にとって正しいことではないようです。どんな助けもありがとう!
あなたのデータ型は何ですか?プロセス.UnitとOperationalUnits.ID? – n8wrl
Processes.Unitはデータ型 'Text'ですが、OperationalUnits.IDはデータ型 'AutoNumber'です。私はProcesses.Unitのバインドされた列がOperationalUnits.IDなので、そのデータ型は通過すると思っていましたが、おそらくそうではありませんか?私のデータベースのこれらのリレーショナルフィールドのほとんどは、ソーステーブルのIDにバインドされているがテキスト名を表示する2列のクエリです。これは、 '3'の意味を調べずに手動でフィールドを変更する必要がある場合は、それを簡単に保ちます。 –
明らかに、テキストフィールドProcesses.Unitは、オートナンバー型の範囲であるOperationalUnits.IDにすることはできません。タイプキャストをする必要があります。テキストフィールドをオートナンバーフィールドに関連付ける場合は、スキーマも混乱します。 – nicomp