у меня есть платежи с полем дата. я хочу суммировать платежи по месяцу за определенный период. но с таким условием- мне нужно чтобы в периоде были отображены все месяцы, даже те, по которым не было платежей- там будет стоять 0 как такое сделать? т.е. были платежи в сентябре и декабре, если просто сгрупировать то выведутся месяцы сентябрь и декабрь, а я хочу чтобы еще вывелись октябрь и ноябрь с нулями
Если две таблицы, то использовать LEFT JOIN или RIGHT JOIN, если одна, то пока приходит на ум лишь COALESCE...
в том и дело что таблица с платежами одна как вариант сделать временную таблицу, забить ее нужным промежутком дат и затем сджойнить и сгрупировать непонятно только как заполнить временную таблицу в контексте текущего запроса я выбираю select max(pay_date), min(pay_date) from t а затем как max\min даты развернуть во временную таблицу?
Если, к примеру, в декабре не было платежей, записей с декабрем в БД нет, верно? Если нет, то здесь будет достаточно GROUP BY [sql]SELECT `date`.`date`, SUM(`date`.`price`) FROM `date` GROUP BY `date`.`date`;[/sql]
верно, но проблема в том, что если нет записей за декабрь, то нужно вывести месяц декабрь и сумму 0 если быть точнее, то у меня в таблице есть платежи, которые шли юзеру, и платежи которые делал юзер нужно вывести сводную таблицу, в первой колонке будет сумма по платежам от юзера, во второй- платежи юзера, в третьей колонке месяц и год