2016-05-09 4 views
0

テーブルAに3つのカラムがあります。すべての値を呼び出すクエリを設計しようとしています私はテーブルBにある1つの列にapeparしていない)。それがより明確にするのに役立つならば、テーブルBはISOコードの通貨のリストであり、テーブルAは使用されている通貨の3つの列であり、 ISOコードを使用してその通貨を示すものではないすべての値。MS Access SQLの場合、テーブル1の3つのカラムに対してテーブル2の1カラムにEXCEPTを使用したい

現在、私はそれらのすべてを1つの列に一致させることができないので、テーブルBに2つの列を追加して個別に一致させることができます。私の制約は、テーブルAを変更することはできません。これを1つのクエリで行う必要があります。私がこれまでに得たことは以下の通りです。

SELECT m.Currency1, i.ISO_Code, m.Currency2 , i.ISO_Code1, m.Currency3, i.ISO_Code2 
FROM A AS m 
LEFT JOIN B AS i 
ON m.Currency=i.ISO_Code 
AND m.Currency2=i.ISO_Code1 
AND m.Currency3=i.ISO_Code2 

WHERE i.ISO_Code is NULL 
OR i.ISO_Code1 is NULL 
OR i.ISO_Code2 is NULL; 
+0

サンプルデータおよび所望の結果を提供してください。 – Sam

答えて

0

「B」に複数の列を作成することはありません。私はこれでSQLFiddleで演奏し、それを動作させました。

このような何か:

SELECT m.Currency1, i.ISO_Code, m.Currency2, j.ISO_Code AS ISO_Code1, m.Currency3, k.ISO_Code AS ISO_Code2 FROM A AS m

LEFT JOIN B as i ON m.Currency1 = i.ISO_Code

LEFT JOIN B as j ON m.Currency2 = j.ISO_Code

LEFT JOIN B as k ON m.Currency3 = k.ISO_Code

WHERE i.ISO_Code IS NULL OR j.ISO_Code IS NULL OR k.ISO_Code IS NULL

+0

異なる変数を使って同じテーブルを定義できるかどうかは分かりませんでした。私はこれを試して、あなたに戻ってきます。入力を気に入ってください。 –

関連する問題