У меня есть реляционная таблица, которая выглядит примерно так:
Я хочу написать запрос, к которому, если я дам ввод tag_id, мне нужно получить video_id на основе следующего правила. Если теги принадлежат к одной категории, то условие OR между тегами. Если теги принадлежат к разной категории, то условие AND между тегами
tag_id pvid_id cat_id
1 1 1
1 2 1
2 2 2
В приведенном выше примере,
Если я дам tag_id 1 в качестве входа, ожидаемый вывод pvid_id как 1,2
Если я дам tag_id 1,2 в качестве ввода, ожидаемый вывод pvid_id равен 2
Я не могу обработать запрос, может ли кто-нибудь помочь мне с ним или дать мне направление для получения решения?
Спасибо
Использовать group_concat:
select group_concat(pvid_id separator ', ') as result
from tab
where tag_id = 1 -- or tag_id = 2
result
1, 2
Для одного входа
Select tag_id,
group_concat(distinct pvid_id)
from your_table where tag_id=1
group by tag_id
Для нескольких входов
Select tag_id,
group_concat(distinct pvid_id)
from your_table where tag_id
in('1','2')
group by tag_id