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 :: Как обычно делают в таком случае?

 PHP.SU

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


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

> Описание: Два вопроса, которых мне пока сложно решить)
STRELOK
Отправлено: 09 Октября, 2011 - 14:30:42
Post Id



Гость


Покинул форум
Сообщений всего: 101
Дата рег-ции: Янв. 2010  
Откуда: Ульяновск


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




Доброго времени суток!)

Очень интересует один вопрос, постараюсь сформулировать его понятно и надеюсь правильный раздел выбрал для создания темы)

В общем, существует таблица с лицензиями вида:
|ID|HWID|Lic_Key|Added|Updated|Seller|Comments|Banned|

вывожу и управляю примерно вот так:
http://floomby[dot]ru/content/Mga32V5Auk

Все работает хорошо, но кое чего не хватает) Далее уже не знаю как сделать...

Хочу сделать статистику обращений к лицензии, включая IP адреса. Для этого надемал сделать табличку.

|ID|Lic_ID|IP|Count|
Вот как обновлять\добавлять запись с наименьшими "затратами"?
Пока я вижу только:
1) Выбрать запись с нужными идентификатором лицензии и ip адрессом.
2) Если она есть, то увеличить запросом количество. Если нету - добавить.

По другому нельзя ли как-то сделать? С уникальным полем, и ON DUBLICATE KEY - думаю не выйдет. Так как могут быть записи с одинаковыми идентификаторами лицензии, так и с одинаковыми ip адрессами.

И еще вопрос.
Как выводя список лицензии, вывести в таблицу количество IP адрессов?

Пока я не вижу другого варианта, как выбирать все записи из таблицы статистики ip адрессов и получать количество. Но при этом, сколько лицензий, столько и запросов.

Скажем 300 лицензий, чтобы вывести таблицу нужно 301 запрос... "Убиться веником"...

Посоветуйте пожалуйста)
 
 Top
Мелкий Супермодератор
Отправлено: 09 Октября, 2011 - 15:01:06
Post Id



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


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


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




STRELOK пишет:
С уникальным полем, и ON DUBLICATE KEY - думаю не выйдет. Так как могут быть записи с одинаковыми идентификаторами лицензии, так и с одинаковыми ip адрессами.

А count тогда по чему считается?

STRELOK пишет:
Как выводя список лицензии, вывести в таблицу количество IP адрессов?

0) подзапросом
1) приджойнить таблицу ip, сгруппировать по лицензии
2) повесить триггер на таблицу ip и инкрементить поле count в таблице лицензий


-----
PostgreSQL DBA
 
 Top
STRELOK
Отправлено: 09 Октября, 2011 - 15:05:42
Post Id



Гость


Покинул форум
Сообщений всего: 101
Дата рег-ции: Янв. 2010  
Откуда: Ульяновск


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




Мелкий пишет:
А count тогда по чему считается?

ну к примеру:

ID | Lic_Id | IP | Count
1 | 1 | 127.0.0.1 | 2
1 | 1 | 127.0.0.2 | 3
1 | 2 | 127.0.0.1 | 4
1 | 2 | 127.0.0.2 | 5

т.е. в таблице могут быть записи с одинаковыми ID лицензии, в данном случае 1 и 2. Также одинаковые IP адресса, но относящиеся к разным лицензиям.

Мелкий пишет:
0) подзапросом
1) приджойнить таблицу ip, сгруппировать по лицензии
2) повесить триггер на таблицу ip и инкрементить поле count в таблице лицензий

Мне это к сожалению мало что говорит((

(Отредактировано автором: 09 Октября, 2011 - 15:07:58)

 
 Top
Мелкий Супермодератор
Отправлено: 09 Октября, 2011 - 15:27:33
Post Id



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


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


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




STRELOK пишет:
т.е. в таблице могут быть записи с одинаковыми ID лицензии, в данном случае 1 и 2. Также одинаковые IP адресса, но относящиеся к разным лицензиям.

Дык делаете уникальный индекс на 2 поля и on dublicate справится.
Кстати, IP лучше хранить в int и преобразовывать через http://dev[dot]mysql[dot]com/doc/refman/[dot][dot][dot]nction_inet-aton да inet_ntoa

STRELOK пишет:
Мне это к сожалению мало что говорит((

Долго писать, неохота.
0) http://dev[dot]mysql[dot]com/doc/refman/[dot][dot][dot]/subqueries[dot]html
1) -
2) http://habrahabr[dot]ru/blogs/mysql/37693/ + http://dev[dot]mysql[dot]com/doc/refman/[dot][dot][dot]en/triggers[dot]html


-----
PostgreSQL DBA
 
 Top
STRELOK
Отправлено: 09 Октября, 2011 - 18:54:29
Post Id



Гость


Покинул форум
Сообщений всего: 101
Дата рег-ции: Янв. 2010  
Откуда: Ульяновск


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




Спасибо!
 
 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