2015-05-22 1 views
-3

Мне нужна была помощь в том, чтобы убедиться, что я правильно использую круглые скобки вокруг инструкций AND OR в SQL SERVER.Скобка вокруг AND OR

SELECT DISTINCT * 
FROM Table 
WHERE yearmonth = 201404 
AND (HasA = 1 OR HasB = 1 OR hasC = 1) 
AND (HasAX = 10 OR HasBX = 10 OR HasCX = 10) 

Когда у меня круглые скобки, как и выше моего второго и строки кода, он также вытаскивает другие значения, как, например HasCX = 23.

Как ни странно эта строка кода работает хорошо:

AND (HasA = 1 OR HasB = 1 OR hasC = 1) 

Как мне написать круглые скобки вокруг этого?

AND (HasAX = 10 OR HasBX = 10 OR HasCX = 10) 

Он должен только вытащить данные для которых условие выполнено с 10.

+0

((HasA = 1 ИЛИ HasB = 1 ИЛИ hasC = 1) И (HasAX = 10 ИЛИ HasBX = 10 ИЛИ HasCX = 10)) – Dreamweaver

+1

Какие значения указаны в 'HasAX и HasBX' для' HasCX = 23'? – Parado

+0

Правило: без круглых скобок, И позаботится прежде ИЛИ. – jarlh

ответ

1

Во-первых, для вашего запроса, уборщик способ написания логики является использование in:

SELECT DISTINCT * 
FROM Table 
WHERE yearmonth = 201404 AND 
     1 IN (HasA, HasB, HasC) AND 
     10 IN (HasAX, HasBX, HaxCX) 

Я подозреваю, что вы действительно хотите:

WHERE yearmonth = 201404 AND 
     ((HasA = 1 AND HasAZ = 10) OR 
     (HasB = 1 AND HasBZ = 10) OR 
     (HasC = 1 AND HasCZ = 10) 
    ) 

В качестве альтернативы, вы можете все они связаны AND, а не OR.

+0

Спасибо, однако он все еще дает мои другие продукты. Позволь мне объяснить. У меня есть HasA OR HasB OR HasC как способ вытащить клиентов, у которых есть либо один из продуктов. Я не могу использовать AND после каждого HasA и HasB и HasC, поскольку он вытаскивает всех клиентов, у которых было все три продукта. Выбор HasAZ и так происходит потому, что они должны быть на определенной платформе, скажем, Fiber. Даже с вашим кодом он все еще собирает коаксиальный кабель. –

1

Я думаю, что ваш запрос правильно. Проверьте свои данные. Строка может иметь HasCx = 23, но также имеет HasBX = 1.

 Смежные вопросы

  • Нет связанных вопросов^_^