#sql #ms-access
#sql #ms-access
Вопрос:
Можно ли написать предложение WHERE с условием IIF и IsNull в SQL MS-ACCESS? т.е.:
ВЫБЕРИТЕ Table1.colx,…. ИЗ ((Таблица1 ВНУТРЕННЕЕ ОБЪЕДИНЕНИЕ Таблицы2 НА Table1.col1=Table2.col1) ВНУТРЕННЕЕ ОБЪЕДИНЕНИЕ Таблицы3 НА Table3.col2=Table2.col2) ГДЕ IIF(IsNull(Table1.colx=’someValue1′),Table1.colx=’someValue2′,Table1.colx=’someValue1′)
Комментарии:
1. Хотя это возможно, запрос не имеет смысла. Если
Table1.colx='someValue1'
бы было null , то было быTable1.colx='someValue2
иTable1.colx='someValue1'
.2. вы абсолютно правы, не имеет смысла. То, что я пытаюсь сделать, это если (TablTe1.colx=’someValue1′ И Table1.colx=’someValue2)=TRUE, тогда возьмите только TablTe1.colx=’someValue1′, если (TablTe1.colx=’someValue1′ =FALSE И Table1.colx=’someValue2=TRUE) возьмите Table1.colx=’Только someValue2 . но я этого не понимаю…
Ответ №1:
Вы почти никогда не хотите использовать IIF
в WHERE
предложении. Просто используйте AND
, OR
, и круглые скобки.
Из вашего комментария решение кажется простым:
WHERE (TablTe1.colx='someValue1' AND Table1.colx='someValue2' AND TablTe1.colx='someValue1')
OR ((TablTe1.colx <> 'someValue1' OR Table1.colx <> 'someValue2') AND Table1.colx='someValue2')