2011-12-08 6 views
1

私はこのような質問をしています。MS Access SQLが正常に動作しない

SELECT * FROM <database1> WHERE (Condition1) AND (Condition2 or Condition3)

私の望ましい結果は、条件2又はcondition3のいずれかを満たす条件1 行を満たす行であるべきです。

しかし、SQLは私に条件1を満たす行を与えています。条件2と条件3の間の 'OR'演算子が何かをしているようです。

専門家の意見が必要です。助けを前にありがとう。

+2

を意味考えるものを意味しますが、サンプルデータだけでなく、実際のクエリを提供することができないのですか?問題を引き起こす構文が間違っている可能性があります – Taryn

+0

太字の「AND」はORでないはずですか?あなたがリンゴの何か、または野菜や肉のものが欲しいということを意味しますか、それともリンゴと野菜や肉を結果が得られないものとしたいのですか? – xQbert

+0

サンプルSQLを参照してください。 '* Term1 *' OR [Title] = '' OR [Title] = '' OR [Title] = [OR] [タイトル] = [OR] [タイトル] = 'OR' OR [タイトル] = '' OR [タイトル] = '' OR [タイトル] = '' OR [タイトル] = '' OR [タイトル] = '') と ( インドネシア*]) ) ) ' – user1087661

答えて

4

SELECT * 
FROM <Database> 
WHERE 
    (
     ( [Title] Like '*Term1*' 
     OR [Title] = '' 
     OR [Title] = '' 
     OR [Title] = '' 
     OR [Title] = '' 
     OR [Title] = '' 
     OR [Title] = '' 
     OR [Title] = '' 
     OR [Title] = '' 
     OR [Title] = '' 
     ) 
    and 
     (
      ( [Title] LIKE '*Term1*' 
      OR '*Term3*' 
      OR '*Indonesia*' 
      or [Country] IN ('*India*','*Indonesia*') 
      ) 
     ) 
    ) 

うち特このように、構造が少しわかりやすくなります。

おそらく投げている最大のものは、LIKE,ORINの演算子を2番目の部分に組み合わせたものです。

LIKEは、ワイルドカードを処理できる唯一の演算子です。ORINはできません。代わりに

  ( [Title] LIKE '*Term1*' 
      OR [Title] LIKE '*Term3*' 
      OR [Title] LIKE '*Indonesia*' 
      OR [Country] LIKE '*India*' 
      OR [Country] LIKE '*Indonesia*' 
      ) 

あなたは、おそらくのようなものを意味だろう。

0

私はよく分からないけど、代わりにこれを試してみてください。

SELECT * FROM <database1> WHERE ((Condition1) AND (Condition2 or Condition3)) 

希望これはあなたの問題を解決します:)あなたが置くあなたのコメントで

0

ワイルドカードはINで使用されていません。

[Country] IN ('*India*','*Indonesia*') 

は、あなたがそれを

関連する問題