За последние 24 часа нас посетили 17644 программиста и 1721 робот. Сейчас ищут 994 программиста ...

group by по списку дат

Тема в разделе "MySQL", создана пользователем vikrorpert, 10 ноя 2011.

  1. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    у меня есть платежи с полем дата. я хочу суммировать платежи по месяцу за определенный период.
    но с таким условием- мне нужно чтобы в периоде были отображены все месяцы, даже те, по которым не было платежей- там будет стоять 0
    как такое сделать?
    т.е. были платежи в сентябре и декабре, если просто сгрупировать то выведутся месяцы сентябрь и декабрь, а я хочу чтобы еще вывелись октябрь и ноябрь с нулями
     
  2. Mr. T

    Mr. T Активный пользователь

    С нами с:
    10 ноя 2010
    Сообщения:
    733
    Симпатии:
    0
    Адрес:
    Украина, г. Киев
    Если две таблицы, то использовать LEFT JOIN или RIGHT JOIN, если одна, то пока приходит на ум лишь COALESCE...
     
  3. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    в том и дело что таблица с платежами одна
    как вариант сделать временную таблицу, забить ее нужным промежутком дат и затем сджойнить и сгрупировать
    непонятно только как заполнить временную таблицу в контексте текущего запроса
    я выбираю select max(pay_date), min(pay_date) from t а затем как max\min даты развернуть во временную таблицу?
     
  4. Mr. T

    Mr. T Активный пользователь

    С нами с:
    10 ноя 2010
    Сообщения:
    733
    Симпатии:
    0
    Адрес:
    Украина, г. Киев
    Если, к примеру, в декабре не было платежей, записей с декабрем в БД нет, верно?

    Если нет, то здесь будет достаточно GROUP BY [sql]SELECT `date`.`date`, SUM(`date`.`price`) FROM `date` GROUP BY `date`.`date`;[/sql]
     
  5. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    верно, но проблема в том, что если нет записей за декабрь, то нужно вывести месяц декабрь и сумму 0
    если быть точнее, то у меня в таблице есть платежи, которые шли юзеру, и платежи которые делал юзер
    нужно вывести сводную таблицу, в первой колонке будет сумма по платежам от юзера, во второй- платежи юзера, в третьей колонке месяц и год