За последние 24 часа нас посетили 21669 программистов и 1018 роботов. Сейчас ищут 705 программистов ...

СВОД таблиц mysql

Тема в разделе "PHP для новичков", создана пользователем Reken, 26 авг 2019.

Метки:
  1. Reken

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

    С нами с:
    4 июл 2019
    Сообщения:
    198
    Симпатии:
    5
    Подскажите пожалуйста советом
    В процессе изучения необходимо реализовать следующее:

    Имеется 12 таблиц в базе mysql (названные по месяцам)
    Каждая таблица имеет ячейки (название организации, счет за воду, счет за тепло)
    Каждую таблицу заполнили 2 организации

    В итоге каждая таблица выглядит примерно так:

    организация счет за воду счет за тепло
    НАЗВАНИЕ1 123.45 456.45
    НАЗВАНИЕ2 789.78 852.48



    Как можно реализовать СВОД таблиц? Допустим нужно вывести одну таблицу, в которой сложились бы данные за три месяца? То есть нужно вывести сколько организации потратили с января по март…

    Подскажите, как примерно начать… По отдельности выводить каждую таблицу я научился, а вот со сводом пока не могу разобраться

    Каждую по отдельности вывожу так:
    Код (Text):
    1. $query ="SELECT * FROM `январь`";
    2.  
    3. $result = mysqli_query($mysqli, $query) or die("ERORRRR " . mysqli_error($mysqli));
    4.  
    5. if($result)
    6. {
    7.     $rows = mysqli_num_rows($result);
    8.  
    9.     echo "<table border=1><tr><th>ОРГАНИЗАЦИЯ</th><th>СЧЕТ ЗА ВОДУ</th><th>СЧЕТ ЗА ТЕПЛО</th></tr>";
    10.     for ($i = 0 ; $i < $rows ; ++$i)
    11.     {
    12.         $row = mysqli_fetch_row($result);
    13.         echo "<tr>";
    14.             for ($j = 0 ; $j < 3 ; ++$j) echo "<td>$row[$j]</td>";
    15.         echo "</tr>";
    16.     }
    17.     echo "</table>";
    18.     mysqli_free_result($result);
    19. }
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.553
    Симпатии:
    1.754
    Не надо так делать. Одна таблица с полем дата делается.
    --- Добавлено ---
    И тогда задача элементарно решится
     
  3. Reken

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

    С нами с:
    4 июл 2019
    Сообщения:
    198
    Симпатии:
    5
    Да, Вы правы...
    А как тогда из таблицы:
    Название | Вода | Тепло | Месяц
    SONY | 256 | 879 | Январь
    SAMSUNG | 897 | 458 | Январь
    SONY | 256 | 879 | Февраль
    SAMSUNG | 897 | 458 | Февраль

    В итоге вывести на экран:
    Название | Вода | Тепло |
    SONY | ИТОГ за два месяца | ИТОГ за два месяца |
    SAMSUNG | ИТОГ за два месяца | ИТОГ за два месяца |
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.553
    Симпатии:
    1.754
    Запросить и обработать на стороне php, к примеру
    --- Добавлено ---
    Или можно сделать запрос с группировкой по названию и суммой
     
  5. villiwalla

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

    С нами с:
    14 дек 2016
    Сообщения:
    471
    Симпатии:
    70
    По 1 таблице нужно будет выбрать с интервалом и сгруппировать полученные строки по дате, агрегировать колонки вода и тепло функцией sum().
    Код (Text):
    1. select company, sum(water) as water_amount, sum(heat) as heat_amount, date_format(created_at, '%Y-%m') as date_pay from transactions
    2. where date_pay beetwen '2019-10' and  '2019-12' group by created_at;
     
  6. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Имена нормализуем. Не путаем понятие даты с названиями месяцев (выше вам показали, что нужно использовать нумерацию месяцев и еще как мин. учитывать год).