MS Access SQL не работает должным образом - PullRequest
1 голос
/ 08 декабря 2011

У меня есть запрос, который выглядит следующим образом.

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

Мой желаемый результат должен быть строками, удовлетворяющими условию1 и строкам, удовлетворяющим условию 2 или условию3

Но SQL дает мне строки, которые просто удовлетворяют условию1.Кажется, что оператор «ИЛИ» между условием 2 и условием 3 что-то делает.

Требуется мнение эксперта.Заранее спасибо за помощь.

Ответы [ 3 ]

4 голосов
/ 08 декабря 2011

В своем комментарии вы добавили:

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*')
            )
        )
    )

Выложив подобное, вы можете увидеть структуру немного проще.

Самое большое, что, вероятно, бросает вас, это сочетание *Операторы 1006 *, OR и IN во второй части.

LIKE - единственный оператор, который может иметь дело с подстановочными знаками, OR и IN не могут.

Вы, вероятно, имели в виду что-то вроде:

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

вместо.

0 голосов
/ 08 декабря 2011

Символы подстановки не используются в IN:

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

не означает, что вы думаете, что означает

0 голосов
/ 08 декабря 2011

Я не уверен, но попробуйте это вместо:

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

надеюсь, это решит вашу проблему:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...