Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Сложение данных из mysql

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
k0ma
Отправлено: 30 Сентября, 2014 - 03:23:53
Post Id


Гость


Покинул форум
Сообщений всего: 82
Дата рег-ции: Март 2013  


Помог: 1 раз(а)




Всем привет. Мелкий, пожалуйста прочти это.... =))
Вобщем есть 2 таблицы:
CODE (htmlphp):
скопировать код в буфер обмена
  1. ip                              dest_ip                         protocol                bytes           pakets          date
  2. 192.168.12.1    80.255.255.255          80                              90                      90                      29.09.14
  3. 192.168.12.2    80.255.255.255          80                              90                      90                      29.09.14
  4. 192.168.12.3    80.255.255.255          80                              90                      90                      29.09.14
  5.  

2ая таблица точно такая же, только местами заменины ip и dest_ip
Необходимо сложить данные pakets, bytes по параметрам ip, date
Тоесть есть адрес 192.168.12.1 надо сложить все его пакеты из 2х таблиц, и байты из 2х таблиц и положить в 3ю таблицу по дате, сложить все данные по датам, в один день, не захватив другой день.


будет чтото типа этого
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. ip                              dest_ip                         protocol                bytes           pakets          date
  3. 192.168.12.1    80.255.255.255          80                              90                      90                      29.09.14
  4. 192.168.12.2    80.255.255.255          80                              90                      90                      29.09.14
  5. 192.168.12.3    80.255.255.255          80                              90                      90                      29.09.14
  6. 192.168.12.1    80.255.255.255          80                              50                      70                      30.09.14
  7. 192.168.12.2    80.255.255.255          80                              50                      70                      30.09.14
  8. 192.168.12.3    80.255.255.255          80                              50                      70                      30.09.14
  9.  


Еще вопрос, вообще созданы таблицы правильно или необходимо создавать заранее таблицы со столбцами id (not null AUTO_INCREMENT) PRIMARY KEY(`id`)?
Читал форумы с похожим вопросом там дали понять что без id данные не будут правильно складываься, все будет путаться, но у нас данных тогда получается милиарды ))
это нормально для мускула?
 
 Top
Мелкий Супермодератор
Отправлено: 30 Сентября, 2014 - 08:50:21
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




k0ma пишет:
Мелкий, пожалуйста прочти это.... =))

Читаю я всё, поэтому надо просить, чтобы ответил Радость

k0ma пишет:
будет чтото типа этого

protocol откуда? По нему тоже группировать?

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT ip, date, sum(packets), sum(bytes) FROM (
  2. SELECT ip, date, packets, bytes FROM table1
  3. UNION ALL
  4. SELECT ip, date, packets, bytes FROM table1
  5. ) st
  6. GROUP BY ip, date


k0ma пишет:
вообще созданы таблицы правильно

Дата не правильная.
IP было бы лучше писать через inet_aton/inet_ntoa (но я честно не в курсе, как быть с ipv6) в инты.
Типы не указаны, первичный ключ не указан, как отвечать на вопрос?

Для innoDB есть особенность в том, что лучше всего живётся в случае монотонного увеличения первичного ключа. И что все индексы указывают не на данные, а на значение первичного ключа. Потому даже при наличии естественного ключа делать суррогатный сиквенс можно.


-----
PostgreSQL DBA
 
 Top
Sail
Отправлено: 30 Сентября, 2014 - 09:03:49
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




Мелкий пишет:
SELECT ip, date, packets, bytes FROM table1
UNION ALL
SELECT ip, date, packets, bytes FROM table1

Где-то тут, однако, должна быть `table2`...
Ниндзя
 
 Top
Мелкий Супермодератор
Отправлено: 30 Сентября, 2014 - 11:28:17
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Sail, ммм, ну да. Вторую table1 читать как table2 Радость Ну и поля там поменять, если надо. Я не очень понял, чем различаются таблицы.


-----
PostgreSQL DBA
 
 Top
k0ma
Отправлено: 30 Сентября, 2014 - 15:50:14
Post Id


Гость


Покинул форум
Сообщений всего: 82
Дата рег-ции: Март 2013  


Помог: 1 раз(а)




И еще раз спасибо!
что бы я делал без Мелкого и форума... читал маны скажите вы и будете правы....

to Мелкий
Я думаю протокол не нужен, нужно только сгрупировать по ip и дате.
ip_from | ip_to | bytes | pakets | date |
table1, table2,table3,table4 и тд.
на счет того как правильно базу создать, да, неумею, и не учился... вроде бы и работает так как есть.
 
 Top
k0ma
Отправлено: 02 Октября, 2014 - 18:22:44
Post Id


Гость


Покинул форум
Сообщений всего: 82
Дата рег-ции: Март 2013  


Помог: 1 раз(а)




To Мелкий
Извини, но я неверно истолковал, то что сам желал получить
Есть 2е таблицы 1 и 2. В них байты повяляються.
Есть таблицы 3 и 4, в них копируютсья данные из таблиц 1 и 2(данные из таблиц удаляются). Каждые 15 минут все копируется в таблицы 3 и 4. КУЧА ХЛАМА!

Далее есть еще таблицы 5 и 6. В конце дня данные из таблицы 3 (bytes) суммируются и кладутся в таблицу 5, а данные из таблицы 4 тоже суммируются (bytes) и кладутся в таблицу 6.

Воот как надо:

Твой пост показывает, как сложить bytes из 2х таблиц в одну, а надо суммировать bytes для каждой таблицы отдельно! Тоесть все байты из таблицы 3 сложить(сумма) и положить в таблицу 5, и тоже самое для таблицы 4, все ее байты сложить и положить в таблицу 6, критерием для сложения являются ip_to(таблица 3) и ip_from (таблица 4)

Таблица 3 и 4 (их колонки одинаковые, но данные отличаются lan->internet, internet->lan)
id ip_from ip_to bytes

Таблицы 5 и 6 (их колонки одинаковые, но данные отличаются lan->internet, internet->lan)
id date ip login ip_from ip_to bytes
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Хранение данных, их вывод и обработка »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB