The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Запрос к mysql не могу победить"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [ Отслеживать ]

"Запрос к mysql не могу победить"  +/
Сообщение от Yuhan on 08-Дек-09, 15:40 
MySQL 5.1

Подскажите как можно выбрать кол-во входящего и исходящего трафика (для одного определённого ip) в одну строку и одним запросом при такой структуре таблицы:

|date_time | ip_from | s_port | ip_to | d_port | bytes |

Нужен такой результат

--- ip ---| -in-  | -out-  |
10.10.1.1 | 50 Mb | 10Mb   |

Двумя запросами сделать легко, а как одним уже весь мозг сломал

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Запрос к mysql не могу победить"  +/
Сообщение от Пытливый Ум on 08-Дек-09, 18:32 
если mysql поддерживает left outer join, используйте его
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Запрос к mysql не могу победить"  +/
Сообщение от PavelR (??) on 08-Дек-09, 20:04 
>[оверквотинг удален]
>
>|date_time | ip_from | s_port | ip_to | d_port | bytes |
>
>
>Нужен такой результат
>
>--- ip ---| -in-  | -out-  |
>10.10.1.1 | 50 Mb | 10Mb   |
>
>Двумя запросами сделать легко, а как одним уже весь мозг сломал

соберите два ваших запроса в один, как вложенные подзапросы.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Запрос к mysql не могу победить"  +/
Сообщение от Yuhon on 08-Дек-09, 20:39 
>[оверквотинг удален]
>>
>>
>>Нужен такой результат
>>
>>--- ip ---| -in-  | -out-  |
>>10.10.1.1 | 50 Mb | 10Mb   |
>>
>>Двумя запросами сделать легко, а как одним уже весь мозг сломал
>
>соберите два ваших запроса в один, как вложенные подзапросы.

PavelR я пробовал различные комбинации с вложенными запросами и union, но никак не могу к правильному варианту придти. Если не сложно покажите как нужно.

Например запрос для вычисления входящего трафика выглядит так
SELECT ip_to, SUM(bytes) FROM tbl1 WHERE ip_to='10.10.1.1'

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Запрос к mysql не могу победить"  +/
Сообщение от PavelR (??) on 08-Дек-09, 23:22 
>[оверквотинг удален]
>>>Двумя запросами сделать легко, а как одним уже весь мозг сломал
>>
>>соберите два ваших запроса в один, как вложенные подзапросы.
>
>PavelR я пробовал различные комбинации с вложенными запросами и union, но никак
>не могу к правильному варианту придти. Если не сложно покажите как
>нужно.
>
>Например запрос для вычисления входящего трафика выглядит так
>SELECT ip_to, SUM(bytes) FROM tbl1 WHERE ip_to='10.10.1.1'

SELECT '10.10.1.1', (select SUM(bytes) FROM tbl1 WHERE ip_to='10.10.1.1') as sum_to,
(select SUM(bytes) FROM tbl1 WHERE ip_from='10.10.1.1') as sum_from


помоему этого достаточно. Не пишу запросов к мускулу каждый день.
В запросе к ораклу, например, надо было бы дописать "from dual".

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Запрос к mysql не могу победить"  +/
Сообщение от Pahanivo email(ok) on 09-Дек-09, 08:06 
>[оверквотинг удален]
>>>Двумя запросами сделать легко, а как одним уже весь мозг сломал
>>
>>соберите два ваших запроса в один, как вложенные подзапросы.
>
>PavelR я пробовал различные комбинации с вложенными запросами и union, но никак
>не могу к правильному варианту придти. Если не сложно покажите как
>нужно.
>
>Например запрос для вычисления входящего трафика выглядит так
>SELECT ip_to, SUM(bytes) FROM tbl1 WHERE ip_to='10.10.1.1'

это по моему в принципе не сделать одним запросом так как критерии отбора друг другу противоречат
делай двумя

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Запрос к mysql не могу победить"  +/
Сообщение от other (ok) on 09-Дек-09, 08:38 
select '10.10.1.1', sum(if ( ip_from='10.10.1.1', bytes,0)) as bytes_out, sum(if ( ip_to='10.10.1.1', bytes, 0)) as bytes_in from table_name;


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Запрос к mysql не могу победить"  +/
Сообщение от PavelR (??) on 09-Дек-09, 08:50 
>select '10.10.1.1', sum(if ( ip_from='10.10.1.1', bytes,0)) as bytes_out, sum(if ( ip_to='10.10.1.1', bytes,
>0)) as bytes_in from table_name;

тогда уж можно попробовать добавить

where ip_from = '10.10.1.1' or ip_to = '10.10.1.1'

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "Запрос к mysql не могу победить"  +/
Сообщение от other (ok) on 09-Дек-09, 08:55 
>тогда уж можно попробовать добавить
>
>where ip_from = '10.10.1.1' or ip_to = '10.10.1.1'

зачем where когда if есть


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "Запрос к mysql не могу победить"  +/
Сообщение от PavelR (??) on 09-Дек-09, 12:00 
>>тогда уж можно попробовать добавить
>>
>>where ip_from = '10.10.1.1' or ip_to = '10.10.1.1'
>
>зачем where когда if есть

поделайте разные варианты на больших бд. подумайте.
воспользуйтесь explain.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "Запрос к mysql не могу победить"  +/
Сообщение от SubGun (ok) on 09-Дек-09, 12:11 
Какие-то скучные ответы.

SELECT ip_to, SUM(bytes) FROM tbl1 WHERE 1 GROUP BY ip_to

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

11. "Запрос к mysql не могу победить"  +/
Сообщение от Yuhan on 09-Дек-09, 13:12 
>Какие-то скучные ответы.
>
>SELECT ip_to, SUM(bytes) FROM tbl1 WHERE 1 GROUP BY ip_to

Это только входящий

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру