traktor150
NoDeny
Пользователь
Карма: 4
Offline
Сообщений: 38
|
|
« : 13 Декабря 2009, 14:35:24 » |
|
Доброго времени суток. Помогите дописать процедуру DROP PROCEDURE IF EXISTS `radreply`; DELIMITER $$ CREATE PROCEDURE `radreply` (IN login VARCHAR(64)) BEGIN DECLARE usr_id INT; DECLARE usr_ip VARCHAR(15);
SELECT id,ip INTO usr_id,usr_ip FROM users WHERE name=login; INSERT into dblogin (mid,act,time) VALUES (usr_id,47,unix_timestamp());
SELECT NULL,login,'Framed-IP-Address',usr_ip,'='; SELECT NULL,login,'Framed-IP-Netmask','255.255.255.255','='; SELECT NULL,login,'Acct-Interim-Interval','50','='; END$$ DELIMITER ;
Задача передать на микротик еще и скорость клиента. Так вот скорость клиента хранится в таблице plans2 в таблице users поле paket указывает на тариф в котором и хранится информация о скорости клеинта. Помогите правильно составить SQL запрос чтоб получить скорость клиента.
|
|
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #1 : 14 Декабря 2009, 14:19:04 » |
|
select speed from plans2 where id=(select paket from users where id=24);
|
|
|
Записан
|
|
|
|
traktor150
NoDeny
Пользователь
Карма: 4
Offline
Сообщений: 38
|
|
« Ответ #2 : 17 Декабря 2009, 16:56:21 » |
|
DROP PROCEDURE IF EXISTS `radreply`; DELIMITER $$ CREATE PROCEDURE `radreply` (IN login VARCHAR(64)) BEGIN DECLARE usr_id INT; DECLARE usr_ip VARCHAR(15); DECLARE speed VARCHAR(15);
SELECT id,ip INTO usr_id,usr_ip FROM users WHERE name=login; INSERT into dblogin (mid,act,time) VALUES (usr_id,47,unix_timestamp()); SELECT speed from plans2 where id=(select paket from users where id=user_id);
SELECT NULL,login,'Framed-IP-Address',usr_ip,'='; SELECT NULL,login,'Framed-IP-Netmask','255.255.255.255','='; SELECT NULL,login,'Acct-Interim-Interval','50','='; SELECT NULL,login,'Ascend-Data-Rate','speed','=';
END$$ DELIMITER ;
Сделал вот так. не работает скорость не режет. Где ошибка подскажите?
|
|
|
Записан
|
|
|
|
goletsa
NoDeny
Спец
Карма: 21
Offline
Сообщений: 973
|
|
« Ответ #3 : 17 Декабря 2009, 17:11:08 » |
|
speed в кавычках?
покажите что пишет radtest
|
|
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #4 : 17 Декабря 2009, 17:26:16 » |
|
speed в кавычках?
ага, здесь и ошибка
|
|
|
Записан
|
|
|
|
traktor150
NoDeny
Пользователь
Карма: 4
Offline
Сообщений: 38
|
|
« Ответ #5 : 17 Декабря 2009, 22:02:22 » |
|
всеравно не работает
|
|
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #6 : 17 Декабря 2009, 22:34:33 » |
|
покажите что пишет radtest
|
|
|
Записан
|
|
|
|
traktor150
NoDeny
Пользователь
Карма: 4
Offline
Сообщений: 38
|
|
« Ответ #7 : 18 Декабря 2009, 14:30:02 » |
|
%radtest admin 12345678 127.0.0.1 0 test Sending Access-Request of id 38 to 127.0.0.1 port 1812 User-Name = "admin" User-Password = "12345678" NAS-IP-Address = 255.255.255.255 NAS-Port = 0 rad_recv: Access-Accept packet from host 127.0.0.1:1812, id=38, length=38 Framed-IP-Address = 192.168.70.154 Framed-IP-Netmask = 255.255.255.255 Acct-Interim-Interval = 50 DROP PROCEDURE IF EXISTS `radreply`; DELIMITER $$ CREATE PROCEDURE `radreply` (IN login VARCHAR(64)) BEGIN DECLARE usr_id INT; DECLARE usr_ip VARCHAR(15); DECLARE speed VARCHAR(15);
SELECT id,ip INTO usr_id,usr_ip FROM users WHERE name=login; INSERT into dblogin (mid,act,time) VALUES (usr_id,47,unix_timestamp()); SELECT speed from plans2 where id=(select paket from users where id=user_id);
SELECT NULL,login,'Framed-IP-Address',usr_ip,'='; SELECT NULL,login,'Framed-IP-Netmask','255.255.255.255','='; SELECT NULL,login,'Acct-Interim-Interval','50','='; SELECT NULL,login,'Ascend-Data-Rate',speed,'=';
END$$ DELIMITER ;
|
|
« Последнее редактирование: 18 Декабря 2009, 14:56:39 от traktor150 »
|
Записан
|
|
|
|
VitalVas
NoDeny
Спец
Карма: 60
Offline
Сообщений: 991
|
|
« Ответ #8 : 18 Декабря 2009, 19:32:03 » |
|
те все ето в ответ приходит?? %radtest admin 12345678 127.0.0.1 0 test Sending Access-Request of id 38 to 127.0.0.1 port 1812 User-Name = "admin" User-Password = "12345678" NAS-IP-Address = 255.255.255.255 NAS-Port = 0 rad_recv: Access-Accept packet from host 127.0.0.1:1812, id=38, length=38 Framed-IP-Address = 192.168.70.154 Framed-IP-Netmask = 255.255.255.255 Acct-Interim-Interval = 50 DROP PROCEDURE IF EXISTS `radreply`; DELIMITER $$ CREATE PROCEDURE `radreply` (IN login VARCHAR(64)) BEGIN DECLARE usr_id INT; DECLARE usr_ip VARCHAR(15); DECLARE speed VARCHAR(15);
SELECT id,ip INTO usr_id,usr_ip FROM users WHERE name=login; INSERT into dblogin (mid,act,time) VALUES (usr_id,47,unix_timestamp()); SELECT speed from plans2 where id=(select paket from users where id=user_id);
SELECT NULL,login,'Framed-IP-Address',usr_ip,'='; SELECT NULL,login,'Framed-IP-Netmask','255.255.255.255','='; SELECT NULL,login,'Acct-Interim-Interval','50','='; SELECT NULL,login,'Ascend-Data-Rate',speed,'=';
END$$ DELIMITER ; п.с. разделяй чемто, а то получается что все ето тебе в ответ
|
|
|
Записан
|
|
|
|
versus
|
|
« Ответ #9 : 19 Декабря 2009, 11:16:24 » |
|
SELECT id,ip INTO usr_id,usr_ip FROM users WHERE name=login; INSERT into dblogin (mid,act,time) VALUES (usr_id,47,unix_timestamp()); SELECT speed from plans2 where id=(select paket from users where id=user_id);
Странно, а где именно берется переменная user_id в процедуре ? Я так понимаю, что ее все таки надо назвать usr_id, потому что если посмотреть на первый селект, то именно так называется переменная с айди пользователя. Я понимаю что копипаст от Стаса рулит, но голова дана для того что бы думать, а не слепо копировать, что дали.
|
|
|
Записан
|
|
|
|
traktor150
NoDeny
Пользователь
Карма: 4
Offline
Сообщений: 38
|
|
« Ответ #10 : 19 Декабря 2009, 12:42:56 » |
|
копипаст не рулит так как Стас ничо не давал, сам затупил. Спасибо что указали где. Исправил и теперь вот так admin 12345678 127.0.0.1 0 test Sending Access-Request of id 131 to 127.0.0.1 port 1812 User-Name = "admin" User-Password = "12345678" NAS-IP-Address = 255.255.255.255 NAS-Port = 0 rad_recv: Access-Accept packet from host 127.0.0.1:1812, id=131, length=20
|
|
« Последнее редактирование: 19 Декабря 2009, 12:47:39 от traktor150 »
|
Записан
|
|
|
|
stix
NoDeny
Спец
Карма: 72
Offline
Сообщений: 1872
Nodeny Support Team
|
|
« Ответ #11 : 13 Июля 2010, 15:14:50 » |
|
т.к. закрыли свежий топик, то продолжу тут http://forum.nodeny.com.ua/index.php?topic=777.msg8117;boardseen#newDROP PROCEDURE IF EXISTS `radreply`; DELIMITER $$ CREATE PROCEDURE `radreply` (IN login VARCHAR(64)) BEGIN DECLARE usr_id INT; DECLARE usr_ip VARCHAR(15); DECLARE usr_speed VARCHAR(15); SELECT id,ip INTO usr_id,usr_ip FROM users WHERE name=login; INSERT into dblogin (mid,act,time) VALUES (usr_id,47,unix_timestamp()); SELECT speed INTO usr_speed from plans2 where id=(select paket from users where id=usr_id); SELECT NULL,login,'Framed-IP-Address',usr_ip,'='; SELECT NULL,login,'Framed-IP-Netmask','255.255.255.255','='; SELECT NULL,login,'Acct-Interim-Interval','50','='; SELECT NULL,login,'Ascend-Data-Rate',usr_speed,'='; END$$ DELIMITER ; таким образом, на микротике будет создаваться динамический шейпер при работе с PPP очень удобно для ресурсосбережения с биллинга идет выборка целого значения, например тариф 4000 в биллинге это значение килобит, а на микротик передается значение в битах соответственно будет шейпер в 4кбит как правильней решить, добавить нулей в биллинг или изменить процедуру?
|
|
|
Записан
|
|
|
|
stix
NoDeny
Спец
Карма: 72
Offline
Сообщений: 1872
Nodeny Support Team
|
|
« Ответ #12 : 13 Июля 2010, 15:22:41 » |
|
а все проще простого DROP PROCEDURE IF EXISTS `radreply`; DELIMITER $$ CREATE PROCEDURE `radreply` (IN login VARCHAR(64)) BEGIN DECLARE usr_id INT; DECLARE usr_ip VARCHAR(15); DECLARE usr_speed VARCHAR(15); SELECT id,ip INTO usr_id,usr_ip FROM users WHERE name=login; INSERT into dblogin (mid,act,time) VALUES (usr_id,47,unix_timestamp()); SELECT speed * 1000 INTO usr_speed from plans2 where id=(select paket from users where id=usr_id); SELECT NULL,login,'Framed-IP-Address',usr_ip,'='; SELECT NULL,login,'Framed-IP-Netmask','255.255.255.255','='; SELECT NULL,login,'Acct-Interim-Interval','50','='; SELECT NULL,login,'Ascend-Data-Rate',usr_speed,'='; END$$ DELIMITER ; и получаем динамический шейпер для микротика. часть из hw_mikrotik ответственную за добавление удаление шейперов можно вырезать. но это касается только случаев использования PPP
|
|
|
Записан
|
|
|
|
goletsa
NoDeny
Спец
Карма: 21
Offline
Сообщений: 973
|
|
« Ответ #13 : 13 Июля 2010, 17:32:34 » |
|
Вот только меня одного смущает SELECT ... WHERE id=(SELECT? Вложенные запросы както неособо быстро выполняютcя мускулом.
|
|
|
Записан
|
|
|
|
stix
NoDeny
Спец
Карма: 72
Offline
Сообщений: 1872
Nodeny Support Team
|
|
« Ответ #14 : 13 Июля 2010, 19:10:11 » |
|
запрос занял 0.0010 сек
не так часто строятся ppp соединения чаще идет выборка данных сателитом. я планирую изменить немного на более простой алгоритм адрес-листы
|
|
|
Записан
|
|
|
|
|