powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запрос.
6 сообщений из 6, страница 1 из 1
Запрос.
    #32950115
Фотография lissyara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть две таблицы traffic_tmp и xl0_2005_03 в обоих одинаковый набор столбцов - date(date), time(time), IP(varchar), port(varchar), protocol(varchar), bytes(varchar), all_bytes(varchar). Надо перенести все данные из таблицы traffic_tmp в xl_2005_03 при этом сложить столбцы bytes и all_bytes у тех строк у которых в столбцах date, time, IP, port, protocol одинаковое значение
(Короче: есть строчки отличающиеся только значением столбцов bytes и all_bytes, надо вместо нескольких строк сделать одну при совпадающих значениях по ВСЕМ столбцам кроме bytes и all_bytes, при этом sum(bytes) as bytes и sum(all_bytes) as all_bytes - так наверное понятней.)
...
Рейтинг: 0 / 0
Запрос.
    #32950252
Pilot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно перенести все с помощью UNION в одну временную таблицу, а из нее уже соберать то, что тебе надо через group by. Чем-то похоже на это .

Для корабля, который не знает куда плыть, нет попутного ветра...
...
Рейтинг: 0 / 0
Запрос.
    #32950272
Фотография lissyara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Э-э-э... там только по одному урлу совпадение. Проще... У меня должны совпасть все поля, кроме двух. Идея с временной таблицей тоже есть - на пальцах оно всё понятно, а вот как начинается практическая реализация - ничё не выходит...
Как мне оно видится "на пальцах": во временную таблицу скидывается всё кроме двух последних колонок, затем все повторяющиеся строки ампутируются (тока как?), оставшиеся уникальные строки по очереди сравниваются со стороками исходной таблицы traffic_tmp, и если совпадают число в bytes и all_bytes суммируются.... Дополз до конца - и как итог в окончательную таблицу вносится строка по которой проводилось сравнение и две получившиеся суммы.
Можно реализовать часть всего этого хозяйства через shell-скрипт (всё равно занесение данных и первоначальная обработка идёт из него)... Опять-таки всё "на пальцах"....
P.S. А ситуация похожа с примером по ссылке выше и в другом - цель - разгрузить сервак в будущем, когда по этим таблицам будут делаться выборки... :) Не 30000 конечно, но и сервак не шустрый - P-I.... :)
Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Запрос.
    #32950302
Pilot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм... Ну, вот смотри:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
mysql> select * from traffic_tmp;
+-------------+------+-------+-----------+
| IP          | port | bytes | all_bytes |
+-------------+------+-------+-----------+
|  192 . 168 . 1 . 1  |  80    |     10  |        100  |
|  192 . 168 . 1 . 2  |  80    |      5  |         10  |
|  192 . 168 . 1 . 2  |  77    |      6  |         77  |
+-------------+------+-------+-----------+
 3  rows in set ( 0 . 00  sec)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
mysql> select * from xl0_2005_03;
+-------------+------+-------+-----------+
| IP          | port | bytes | all_bytes |
+-------------+------+-------+-----------+
|  192 . 168 . 1 . 1  |  80    |     20  |        200  |
|  192 . 168 . 1 . 3  |  21    |     33  |        333  |
+-------------+------+-------+-----------+
 2  rows in set ( 0 . 00  sec)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
mysql> create temporary table myTmpTable select * from traffic_tmp union all select * from xl0_2005_03;
Query OK,  5  rows affected ( 0 . 40  sec)
Records:  5   Duplicates:  0   Warnings:  0 

mysql> select * from myTmpTable;
+-------------+------+-------+-----------+
| IP          | port | bytes | all_bytes |
+-------------+------+-------+-----------+
|  192 . 168 . 1 . 1  |  80    |     10  |        100  |
|  192 . 168 . 1 . 2  |  80    |      5  |         10  |
|  192 . 168 . 1 . 2  |  77    |      6  |         77  |
|  192 . 168 . 1 . 1  |  80    |     20  |        200  |
|  192 . 168 . 1 . 3  |  21    |     33  |        333  |
+-------------+------+-------+-----------+
 5  rows in set ( 0 . 00  sec)

Ну и в итоге:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
mysql> select IP, port, sum(bytes), sum(all_bytes) from myTmpTable group by IP, port;
+-------------+------+------------+----------------+
| IP          | port | sum(bytes) | sum(all_bytes) |
+-------------+------+------------+----------------+
|  192 . 168 . 1 . 1  |  80    |          30  |             300  |
|  192 . 168 . 1 . 2  |  77    |           6  |              77  |
|  192 . 168 . 1 . 2  |  80    |           5  |              10  |
|  192 . 168 . 1 . 3  |  21    |          33  |             333  |
+-------------+------+------------+----------------+
 4  rows in set ( 1 . 18  sec)

Как видишь, он сгруппировал по порту и IP-шнику (суммирует, тока если оба поля совпадают). Я сделал таблицы только с двумя совп. полями - если у тебя их больше - все то же самое, просто мне было лень забивать кучу полей. :)

Для корабля, который не знает куда плыть, нет попутного ветра...
...
Рейтинг: 0 / 0
Запрос.
    #32950461
Фотография lissyara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Благодарствую! Идею ухватил, вечером буду пробовать (это на домашней машине).
Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Запрос.
    #32950531
Фотография lissyara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как оказалось - мне достаточно последнего запроса.
Код: plaintext
1.
2.
mysql --host= 192 . 168 . 0 . 250  --user=root --password=XXXXX --database=trafd --execute="select IP_inet_addr, domain_inet_addr, \
inet_port, IP_local_addr, domain_local_addr, local_port, protokol, sum(bytes), sum(all_bytes) from yesterday group by IP_inet_addr, \
domain_inet_addr, inet_port, IP_local_addr, domain_local_addr, local_port, protokol" 
(это я на работе нашёл остатки своих более ранних экспериментов, столбцы чуть другие, что вовсе и не важно.)
Спасибо!
Всё гениальное - просто....
Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запрос.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]