Я хочу использовать следующий запрос:
SELECT concat(firstname,' ', surname) AS 'Fname',
MAX(CASE WHEN DAYOFWEEK(date) = 1 THEN concat(starttime,'-', endtime) END) `Sunday`,
MAX(CASE WHEN DAYOFWEEK(date) = 2 THEN concat(starttime,'-', endtime) END) `Monday`,
MAX(CASE WHEN DAYOFWEEK(date) = 3 THEN concat(starttime,'-', endtime) END) `Tuesday`,
MAX(CASE WHEN DAYOFWEEK(date) = 4 THEN concat(starttime,'-', endtime) END) `Wednesday`,
MAX(CASE WHEN DAYOFWEEK(date) = 5 THEN concat(starttime,'-', endtime) END) `Thursday`,
MAX(CASE WHEN DAYOFWEEK(date) = 6 THEN concat(starttime,'-', endtime) END) `Friday`,
MAX(CASE WHEN DAYOFWEEK(date) = 7 THEN concat(starttime,'-', endtime) END) `Saturday`
FROM shifts NATURAL JOIN employees
GROUP BY Fname, date
И как-то изменить его так, чтобы отображались только значения ЭТОЙ НЕДЕЛИ, примерно так:
SELECT concat(firstname,' ', surname) AS 'Fname',
MAX(CASE WHEN (DAYOFWEEK(date) = 1 AND WITHIN THIS WEEK) THEN concat(starttime,'-', endtime) END) `Sunday`,
etc... etc...
Это возможно через MySQL?
Вопрос в том, о какой неделе ты говоришь? Я бы использовал часть критерия where в операторе select для фильтрации по периоду, однако вам необходимо определить, какую неделю вы говорите.
Используйте между … и …, если вы знаете точные даты начала и окончания недели:
… где дата между … и …
использование неделю() (или функции weekofyear ()) и year () для получения дат на одну неделю (пожалуйста, обратите внимание, что начальный день недели является настраиваемой переменной, подробности см. по ссылке для week ()):
… где год (дата) = … и неделя (дата) = …
Та же логика, что и в предыдущем, просто используйте Формат даты() чтобы получить комбинацию года и недели.
Других решений пока нет …