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
Форумы портала PHP.SU :: Версия для печати :: Сложение данных из mysql
Форумы портала PHP.SU » » Хранение данных, их вывод и обработка » Сложение данных из mysql

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

1. k0ma - 30 Сентября, 2014 - 03:23:53 - перейти к сообщению
Всем привет. Мелкий, пожалуйста прочти это.... =))
Вобщем есть 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 данные не будут правильно складываься, все будет путаться, но у нас данных тогда получается милиарды ))
это нормально для мускула?
2. Мелкий - 30 Сентября, 2014 - 08:50:21 - перейти к сообщению
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 есть особенность в том, что лучше всего живётся в случае монотонного увеличения первичного ключа. И что все индексы указывают не на данные, а на значение первичного ключа. Потому даже при наличии естественного ключа делать суррогатный сиквенс можно.
3. Sail - 30 Сентября, 2014 - 09:03:49 - перейти к сообщению
Мелкий пишет:
SELECT ip, date, packets, bytes FROM table1
UNION ALL
SELECT ip, date, packets, bytes FROM table1

Где-то тут, однако, должна быть `table2`...
Ниндзя
4. Мелкий - 30 Сентября, 2014 - 11:28:17 - перейти к сообщению
Sail, ммм, ну да. Вторую table1 читать как table2 Радость Ну и поля там поменять, если надо. Я не очень понял, чем различаются таблицы.
5. k0ma - 30 Сентября, 2014 - 15:50:14 - перейти к сообщению
И еще раз спасибо!
что бы я делал без Мелкого и форума... читал маны скажите вы и будете правы....

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

 

Powered by ExBB FM 1.0 RC1