Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сложить значение по уникальным записям и объединит 
V
    Опции темы
BurnerCode
Дата 11.6.2008, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 28.2.2008
Где: Беларусь

Репутация: нет
Всего: нет



Есть таблица squidlog вида:

Код

+------------+-------+------------------------------------+---------------+----------+---------+
| date       | login | domain                             | ip            | size     | time    |
+------------+-------+------------------------------------+---------------+----------+---------+
| 2008-02-04 | make  | www.google-analytics.com           | 192.168.11.26 |      391 |     103 | 
| 2008-02-04 | root  | spylog.ru                          | 192.168.11.26 |      601 |     312 | 
| 2008-02-04 | root  | mg.dt00.net                        | 192.168.11.26 |     4423 |     497 | 
| 2008-02-04 | root  | uasearch.kiev.ua                   | 192.168.11.26 |      256 |     199 | 
| 2008-02-04 | mace  | www.mister-wong.ru                 | 192.168.11.26 |      549 |       0 | 
| 2008-02-04 | root  | u5235.06.spylog.com                | 192.168.11.26 |      593 |     563 | 
| 2008-02-04 | deep  | u7677.36.spylog.com                | 192.168.11.26 |     1223 |     157 |


Есть еще одна таблица userpref:
Код


+--------+----------+---------+-------+----------+
| login  | username | groupid | quota | password |
+--------+----------+---------+-------+----------+
| san    | Соков    |       1 |   333 | l0k3r0n  | 
| san    | Галя     |       1 |   333 | l0k3r0n  | 
| Tester | Sexer    |       5 |   322 | paswd2   | 
+--------+----------+---------+-------+----------+


Мне нужна в таблице для каждого логина просуммировать столбец size и time, а потом для каждого логина взять значение quota из таблицы userpref, отнять от quota size ( это будет баланс ) и записать эти данные в таблицу result, что бы она имела вид:
Код


+-------+------+--------+------+-----------+
| login | size |  quota | time | ballance  |
+-------+------+--------+------+-----------+


Пишу биллинг на PERL, но для это задачи решил использовать средства SQL, помоги пожалуйсто

ps: с БД толька недавно начал работать
PM MAIL   Вверх
del3d
Дата 11.6.2008, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 128
Регистрация: 13.11.2007

Репутация: нет
Всего: нет



Чо-т таблицы какие-то странные.. они что, по логину связываются?
для начала добавь ключевое поле id в каждую таблицу..
PM MAIL   Вверх
BurnerCode
Дата 13.6.2008, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 28.2.2008
Где: Беларусь

Репутация: нет
Всего: нет



del3d а что id это обязательно??? у меня и так работает.

Господа помогите с запросом.

ps: прошу прощения, ошибся веткой форума.
PM MAIL   Вверх
skyboy
Дата 13.6.2008, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



Цитата(BurnerCode @  13.6.2008,  09:35 Найти цитируемый пост)
 а что id это обязательно??? у меня и так работает.

а у тебя не тормозить при связи по строковому полю? сколько у тебя записей в таблице? меньше десятка?

PM MAIL   Вверх
Feldmarschall
Дата 13.6.2008, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 3
Всего: 32



skyboy, я не думаю, что это критично. 

BurnerCode, давай по порядку. просуммировать по логинам можешь?
PM   Вверх
BurnerCode
Дата 13.6.2008, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 28.2.2008
Где: Беларусь

Репутация: нет
Всего: нет



Да вроде не тормозит, записал примерна 40к строк, при этом сморел top-ом загрузку проца, да все вроде нормал.

просуммировать могу, примерна так   
Код

SELECT sum(size) FROM squidlog WHERE login='root';


Но скажем как получит массив уникальных логинов, потом по каждому из них просуммировать средствами языка sql я не знаю.
Я бы это сделал перлом, но мне кажется что из mysql в perl этот процесс скажеться на быстродействие.

Это сообщение отредактировал(а) BurnerCode - 13.6.2008, 14:08
PM MAIL   Вверх
Feldmarschall
Дата 13.6.2008, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 3
Всего: 32



для этого служит оператор group by
Код

SELECT login, sum(size) FROM squidlog GROUP BY login

теперь надо джойнить
как это делается ты тоже не знаешь?

Добавлено через 1 минуту и 19 секунд
кстати, если ты пишешь в новую таблицу, то тебе не пофиг на скорость?
PM   Вверх
BurnerCode
Дата 13.6.2008, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 28.2.2008
Где: Беларусь

Репутация: нет
Всего: нет



неа, этих тонкастей я уже не знаю
PM MAIL   Вверх
Feldmarschall
Дата 13.6.2008, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 3
Всего: 32



Это не тонкости, это азбука.
Код

SELECT s.login, sum(size) as size, quota, quota-size as balance  FROM squidlog s, userpref u WHERE s.login=u.login GROUP BY s.login

и почитай хоть что-нибудь про запросы.лично я больше писать не буду.

таблица result тебе не нужна
PM   Вверх
BurnerCode
Дата 13.6.2008, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 28.2.2008
Где: Беларусь

Репутация: нет
Всего: нет



Большое спасибо, нада почитать =)

ps: оно даже работает =)

Это сообщение отредактировал(а) BurnerCode - 13.6.2008, 15:06
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.1906 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.