Добрый день. Идея такая - если нет данных за промежуток даты, записать 0. Упрощенный запрос: PHP: SELECT SUM(RF.[Status]) FROM table AS RF -- прочие LEFT JOIN WHERE RF.[test] = 1 AND (RF.[Date] BETWEEN STD.[ProductionStart] AND STD.[ProductionEnd] OR RF.[Status] = 0) То есть именно вот такая запись означает - если нет данных за промежуток даты, записать 0? PHP: 'AND (RF.[Date] BETWEEN STD.[ProductionStart] AND STD.[ProductionEnd] OR RF.[Status] = 0)' Работает это именно так, какого то хрена. Все верно или я где то ошибаюсь?
@Sail хорошо, спасибо. таким не пользовался раньше. Всегда думал что уж если OR то должно быть другое условие.
Если OR прокатило в первом варианте, то если не использовать SUM: PHP: SELECT RF.[Duration] -- FROM ... WHERE ST.[TaskDate] = '2019-11-20' AND ST.[ShiftType] = 0 AND (RF.[Date] BETWEEN STD.[ProductionStart] AND STD.[ProductionEnd] OR RF.[Duration] = 0) AND STD.[TaskStatus] = 1 ORDER BY RF.[Date] DESC То ответ будет пустым count = 0 Подскажите как в данном sql запросе вывести [Duration] = 0, если за выборкой BETWEEN нет данных?
Подробнее, раскройте пожалуйста, что подразумевается в этой фразе... В приведённом запросе в выборку попадут все записи, у которых RF.[Duration] равно 0 И у которых: ST.[TaskDate]='2019-11-20' ST.[ShiftType]=0 STD.[TaskStatus]=1
@Sail а если в этой выборке вообще нет данных по такому условию? нужно в результате получить RF.[Duration] = 0 --- Добавлено --- у меня сейчас на стороне php этот ноль: PHP: if(count($result) !== 0){ return $result; }else{ return 0; } а хотелось бы на стороне sql
Код (Text): select case when count(1)>0 then RF.[Duration] else 0 end as `ALIAS` from... ALIAS, соответственно - псевдоним... подставь тот, что нужен.