MS Access。私は2つのテーブルを持っています。私は表に一致していない。表1からすべてのレコードを検索しようとしています2.複数の一致オプションを持つ不一致レコードの検索方法
Table 1
DP FY BS RM EX
--------------------------------
21 1 0107 0 3000
20 R 0201 6 3960
12 3 0165 A 1111
Table 2
DP FY BS RD LI
-------------------------------
11 4 0300 0 **11
21 5 0107 7 8**W
97 7 0819 0 2***
21 4 0107 7 2011
私はTable1.DP + Table1.FY + Table1.BS + Table1.RM + Table1.EXを連結する必要が
Table2.DP + Table2.FY + Table2.BS + Table2.RD + Table2.LIの列にtable2に一致がないTable1のレコードを検索します。
また、表2.LIのいくつかの部分文字列には、アスタリスク(ワイルドカード、実際のアスタリスクではありません)が含まれています。
Table2.LIの左2つの文字が、私は私の結果にその行を返したい、その場合には、アスタリスク、Table2.LIの
真ん中の2つの文字は、私がしたい、その場合にはアスタリスク、可能性があることができその行を結果に戻します。
Table2.LIの最後の3文字はアスタリスクである可能性があります。この場合、結果にその行を戻したいと思います。
我々はキーという名前の12文字のテキストフィールドに5つのキーフィールドを連結した場合ので、私はそこにそれらのインスタンスでは、基本的に
Table1.Key <> Table2.Key
Left(Table1.Key,8) + "**" + Right(Table1.Key,2) <> Table2.Key
Left(Table1.Key,9) + "**" + Right(Table1.Key,1) <> Table2.Key
Left(Table1.Key,9) + "***" <> Table2.Key
表1からすべての結果を返しますクエリをしたいですTable2.LIの部分文字列にアスタリスクがありますが、私はこれらの位置にTable1.EXが何であるか気にしません。
表2のこれらの条件に一致していない表1の結果しか得られないUNMATCHEDクエリの結果を私に与えるためにSQL文を書くにはどうすればよいですか?比較のためにワイルドカードとしてフィールド内のアスタリスクを確認するクエリを記述できますか?
更新:キーフィールドを作成した後で、アスタリスクをキーフィールドの疑問符に置き換えることで問題を解決できました。次に、等価ではなく結合節で「好き」を使用して左結合を実行します。今私は新たに発見された問題があります。 LIフィールドにアスタリスクがある2つの条件がありますが、それらをワイルドカードとして見せたくないので疑問符に変換したくありません。
これらは私が変更したい条件です。 Table2.LI =
****
X*XX
(Xは任意の数字または文字):Table2.LI =
**XX
X**X
X***
これらは私がワイルドカードに変えることにしたくない条件です。
Where 2. Where is where節を追加するだけで、最初の問題を解決することができました。どこにTable2.LI NOT CONTAINS( "****")がありますか?今私は最後の状態を解決しようとしています。 2番目の位置のアスタリスクだけLIフィールドをチェックして、そのケースを無視する必要があります。
何を試しましたか? – blueCat
私はtable2.LIのアスタリスクを疑問符に置き換えることでそれを行う方法を見つけました。Accessは疑問符をワイルドカードとして認識し、LIKEキー(=ではなく)を左結合します。ここで、table2.keyはnullです。 – Nina
更新を追加します。 – Nina