2014-12-19 2 views
1

У нас есть база данных с столбцом с надписью «pr_label» и «pr_quantity». Когда мы запрашиваем нашу информацию, элементы с надписью «C1» и «C2». Ниже приведен код, который мы использовали в нашей команде SQLSQL Команда WHERE с несколькими операторами

'pr_label' IN ('C1', 'C2') 

, но теперь мы хотим, чтобы добавить дополнительные правила, где мы хотим, чтобы отобразить все «C1» элементы и только «C2» элементы, которые имеют значение больше нуля в "pr_quantity". Так что, если мы применили эти правила в таблице ниже будет отображаться только информация о 900, 901, 902 и 903. 904 и 905 не будет отображаться, поскольку == «» pr_quantity 0.

===================================== 
pr_id  | pr_label | pr_quantity | 
===================================== 
900  | C1  | 4   | 
901  | C1  | 4   | 
902  | C1  | 4   | 
903  | C2  | 4   | 
904  | C2  | 0   | 
905  | C2  | 0   | 
===================================== 

Я пытаюсь код, ниже которого но он применяется как к «C1», так и «C2».

`pr_quantity ` > 0 
+0

почему бы вам не попробовать, как это, 'pr_label = 'C1' или (' pr_label = 'C2' и pr_quantity> 0'). – SRJ

+0

У вас есть место в вашем последнем выражении. Без пространства он должен работать. –

+0

Подсказка внутри самого вопроса - «Я пытаюсь использовать код ниже, который работает, но он применим как к« C1 », так и« C2 ». Почему бы не попробовать применить его только один? Это просто, если вы знаете основы sql. –

ответ

3

Вы должны быть в состоянии просто сказать:

WHERE (pr_label = 'C1') 
    OR (pr_label = 'C2' AND pr_quantity > 0) 
1

Чтобы ответить на этот вопрос

мы хотим показать все "C1" элементы и только "C2" элементы, которые имеют значение больше нуля в «pr_quantity»

следующий запрос был бы удобен (Я буду называть это как таблицу продукта)

SELECT 
    * 
FROM PRODUCT 
WHERE 
pr_label = 'C1' OR (pr_label = 'C2' AND pr_quantity > 0) 
Смежные вопросы