Я пытаюсь использовать групповой конкатат с функцией in в mysql, это не дает мне никакой синтаксической ошибки, но я не уверен, что она работает.
Я пытаюсь сделатьчто-то вроде этого:
select
case
when weekday(ps.date) in (group_concat(vd.valid_days)) then ps.date
when weekday(ps.date+1) in (group_concat(vd.valid_days)) then DATE_ADD(ps.date, INTERVAL 1 DAY)
when weekday(ps.date+2) in (group_concat(vd.valid_days)) then DATE_ADD(ps.date, INTERVAL 2 DAY)
when weekday(ps.date+3) in (group_concat(vd.valid_days)) then DATE_ADD(ps.date, INTERVAL 3 DAY)
when weekday(ps.date+4) in (group_concat(vd.valid_days)) then DATE_ADD(ps.date, INTERVAL 4 DAY)
when weekday(ps.date+5) in (group_concat(vd.valid_days)) then DATE_ADD(ps.date, INTERVAL 5 DAY)
end as valid_date
from
purchase_shopping ps
left join
purchase_region pr on pr.id = ps.idfk_region
left join
valid_weeks_days vd on vd.idfk_region = pr.id
group by ps.id
Что мне нужно в основном, это вернуть действительную дату, если определенный день находится в конкатате группы из левого соединения.Я не знаю, неверна ли моя логика или она не работает.Obs: функция concat группы возвращает что-то вроде этого: (1,2,5), поэтому она должна работать с функцией in ().
Пример с переработанными данными кода:
ps.date = 2018-10-17
weekday(ps.date) = 2
group_concat(vd.valid_days) = (1,4)
then valid_date will be 2018-10-19