ВЫБЕРИТЕ с несколькими условиями WHERE в одном столбце и уникальными значениями - PullRequest
0 голосов
/ 21 апреля 2019

Я думаю, что это легко, но мне нужна помощь, чтобы решить ее:

id   product  option    suboption 
-----------------------------------
118     A       1           1 
119     A       2           2 
120     A       3           1 
121     B       1           2
122     B       2           2
123     B       3           1
124     C       1           1
125     C       2           2
126     C       3           1

Мне нужно найти все уникальные продукты, где для варианта = 1, тогда подопция = 1, для варианта = 2затем подопция = 2, а для опции = 3 затем подопция = 1.

В этом примере те, которые удовлетворяют моему запросу, - это продукты А и С.

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

Ответы [ 2 ]

3 голосов
/ 21 апреля 2019

Вы можете использовать group by и having.Вот один из методов:

select product
from t
where (option, suboption) in ( (1, 1), (2, 2), (3, 1) )
group by product
having count(distinct option) = 3;

В данных вашего примера есть только один вариант для каждого продукта.Если это так, тогда используйте:

having count(*) = 3

вместо count(distinct).

1 голос
/ 21 апреля 2019

Вы можете группировать по продукту:

select 
  product
from tablename
group by product
having
  sum(option = 1 and suboption = 1) > 0
  and
  sum(option = 2 and suboption = 2) > 0
  and
  sum(option = 3 and suboption = 1) > 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...