Я работаю с этим некоторое время, не могу ли я найти душу, так что, возможно, вы можете мне помочь.Проблемы с EXISTS и GROUP BY
У меня есть таблица с кодом «код продукта» с тремя столбцами, продукт можно повторить, но код должен быть уникальным для каждого продукта. Это структура таблицы:
CREATE TABLE table1
(`id` int, `product` varchar(10), `code` int)
;
INSERT INTO table1
(`id`, `product`, `code`)
VALUES
(1, 'product1', 1),
(2, 'product1', 2),
(3, 'product1', 3),
(4, 'product2', 2),
(5, 'product2', 3),
(6, 'product3', 1),
(7, 'product3', 3)
;
Так что я пытаюсь сделать, это список дел, если продукт имеет код 1 и код 2, показывает определенное значение в колонке ответа, если продукт имеет только код 1, показывает другое значение, если у продукта есть код 2, то другое значение, и если у продукта нет кода 1 или кода 2, тогда показывается другое значение (код 3 в данном примере не имеет значения).
Это то, что я так далеко
select product,
case
when exists(select 1 from table1 where code=1) = 1
and exists(select 1 from table1 where code=2) = 1
then 'Types are : 1,2'
when exists(select 1 from table1 where code=1) = 1
and exists(select 1 from table1 where code=2) = 0
then 'Type is : 1'
when exists(select 1 from table1 where code=1) = 0
and exists(select 1 from table1 where code=2) = 1
then 'Type is : 2'
else
'There are no types 1 or 2'
end as response
from table1
group by product
Проблема заключается в том, что Resultset показывает только «типы: 1,2» в моей колонке ответа на Product1, product2 и product3, я считаю, что в подвыборки ищет все продукты (а не для каждого продукта), поэтому всегда верно, что существуют код 1 и код 2.
Любая помощь или направление, которое вы могли бы предоставить, будут очень желанными.
Спасибо за чтение.
Fiddle пример: http://sqlfiddle.com/#!9/25eb55/3
Определенно путь быстрее, я беспокоился о производительности, но не больше. – None