SQL-запрос для фильтрации столбца на основе других столбцов

0

У меня есть реляционная таблица, которая выглядит примерно так:

Я хочу написать запрос, к которому, если я дам ввод 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

Я не могу обработать запрос, может ли кто-нибудь помочь мне с ним или дать мне направление для получения решения?

Спасибо

Теги:
relationship
relational-database

2 ответа

0

Использовать group_concat:

select group_concat(pvid_id separator ', ') as result
  from tab
 where tag_id = 1 -- or tag_id = 2

result
 1, 2

Демо-версия SQL Fiddle

0

Для одного входа

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню