Несколько полезных SQL запросов

Технические вопросы по UTM 5.0
Закрыто
Аватара пользователя
Chrst
Сообщения: 370
Зарегистрирован: Пт май 11, 2007 09:28
Откуда: Медиахолдинг "ЛеККС"
Контактная информация:

Сообщение Chrst »

Jonson писал(а):где храниться пароль на инет?
Table ip_groups

retimer
Сообщения: 11
Зарегистрирован: Вт янв 17, 2012 08:35

Сообщение retimer »

Народ, подскажите, как сделать запрос ЛС+IP+MAC
Надо для скрипта.

Morbid
Сообщения: 104
Зарегистрирован: Пт окт 02, 2009 15:00
Откуда: МО

Сообщение Morbid »

как то так:

Код: Выделить всё

SELECT inet_ntoa(t1.ip&0xffffffff) as IP,
                  mac,
                  t3.user_id as UserId,
                  t5.id as Shet,
                  t4.full_name as FIO
           FROM 
                  ip_groups t1, 
                  iptraffic_service_links t2, 
                  service_links t3, 
                  users t4, 
                  accounts t5, 
                 users_accounts t6
           WHERE  
                  t1.ip_group_id = t2.ip_group_id and
                  t2.id = t3.id and
                  t3.user_id = t4.id and
		  t4.id = t6.uid and
		  t6.account_id = t5.id and
		  t1.is_deleted <> '1' and
		  t2.is_deleted <> '1' and	
		  t3.is_deleted <> '1' and
		  t4.is_deleted <> '1' and
		  t5.is_deleted <> '1' and
		  t6.is_deleted <> '1'

retimer
Сообщения: 11
Зарегистрирован: Вт янв 17, 2012 08:35

Сообщение retimer »

Спасибо огромное!
То, что надо! А я сначала пробовал так:

Код: Выделить всё

SELECT	service_links.user_id,
	ip_groups.ip,
	ip_groups.mac
	FROM
		service_links,
		iptraffic_service_links,	
		ip_groups
	WHERE
		service_links.id=iptraffic_service_links.id AND
		iptraffic_service_links.ip_group_id=ip_groups.ip_group_id;
но результат надо дополнительно обрабатывать.
Ваш вариант, определённо, лучше!

kirush
Сообщения: 699
Зарегистрирован: Пт фев 04, 2005 13:58

Сообщение kirush »

Помогите с запросом, выдернуть IP адреса у кого установлена системная блокировка.

Morbid
Сообщения: 104
Зарегистрирован: Пт окт 02, 2009 15:00
Откуда: МО

Сообщение Morbid »

Состояние пользователей, храниться в таблицы accounts, в поле is_blocked (если больше 0 то стоит какая то блокировка). Так что в этот запрос, добавьте условие t5.accounts > 0 ну и соответсвенно, в после селект t5.is_blocked

Код: Выделить всё

SELECT inet_ntoa&#40;t1.ip&0xffffffff&#41; as IP,
                  mac,
                  t3.user_id as UserId,
                  t5.id as Shet,
                  t4.full_name as FIO
           FROM
                  ip_groups t1,
                  iptraffic_service_links t2,
                  service_links t3,
                  users t4,
                  accounts t5,
                 users_accounts t6
           WHERE 
                  t1.ip_group_id = t2.ip_group_id and
                  t2.id = t3.id and
                  t3.user_id = t4.id and
        t4.id = t6.uid and
        t6.account_id = t5.id and
        t1.is_deleted <> '1' and
        t2.is_deleted <> '1' and   
        t3.is_deleted <> '1' and
        t4.is_deleted <> '1' and
        t5.is_deleted <> '1' and
        t6.is_deleted <> '1'

Аватара пользователя
MaxDM
Сообщения: 313
Зарегистрирован: Пн апр 03, 2006 10:26
Контактная информация:

Сообщение MaxDM »

kirush писал(а):Помогите с запросом, выдернуть IP адреса у кого установлена системная блокировка.
Показывает IP с любой блокировкой:

Код: Выделить всё

SELECT u.id AS uid, inet_ntoa&#40;ig.ip&#41;
FROM users u,
 service_links sl,
 iptraffic_service_links isl,
 ip_groups ig,
 accounts a
WHERE u.id=sl.user_id
 AND u.basic_account=a.id
 AND a.is_blocked != 0
 AND isl.id=sl.id
 AND isl.ip_group_id=ig.ip_group_id
 AND ig.is_deleted=0
 AND u.is_deleted=0
 AND sl.is_deleted=0 ORDER BY u.id;

kirush
Сообщения: 699
Зарегистрирован: Пт фев 04, 2005 13:58

Сообщение kirush »

спасибо

starchik
Сообщения: 461
Зарегистрирован: Сб ноя 22, 2008 22:07

Сообщение starchik »

есть скрипт

Код: Выделить всё

<?php
	$db_host='DB_host';
	$db_base='UTM5';
	$db_user='блабла';
	$db_password='блабла';

	$db_connect=mysql_connect&#40;$db_host,$db_user,$db_password&#41;;
	mysql_select_db&#40;$db_base,$db_connect&#41;;

	$query="SELECT u.id, u.basic_account FROM users u, accounts a WHERE u.is_deleted = '0' AND u.basic_account = a.id AND a.int_status = '1'";
	$result=@mysql_query&#40;$query&#41;;
	while &#40;$row = mysql_fetch_array&#40;$result&#41;&#41; &#123;
		require_once&#40;"/netup/utm5/urfa/URFAClient.php"&#41;;
    	$urfa_admin = new URFAClient_Admin&#40;'блабла', 'блабла'&#41;;
		$asu = $urfa_admin->rpcf_get_all_services_for_user&#40;$row&#91;1&#93;&#41;;
		$slink_id = $asu&#91;'services'&#93;&#91;0&#93;&#91;'slink_id'&#93;;
		$isl = $urfa_admin->rpcf_get_iptraffic_service_link&#40;$slink_id&#41;;
		$u_tariff = $urfa_admin->rpcf_get_user_tariffs&#40;$row&#91;0&#93;, $account_id=0&#41;;
		$tariff_id = $u_tariff &#91;'user_tariffs'&#93; &#91;0&#93; &#91;'current_tariff'&#93;;
		$i_tarriff = $urfa_admin->rpcf_get_tariff&#40;$tariff_id&#41;;
		$ip = $isl&#91;'ip_groups'&#93;&#91;0&#93;&#91;'ip'&#93;;
		$speed = $i_tarriff&#91;'services'&#93;&#91;0&#93;&#91;'comment'&#93;;
		echo $ip,"\t",$speed,"\n";
       &#125;
?>
он выбирает ip абонента и описание тарифа, точне описание услуги в тарифном плане(там указана скорость ап/даун)
вот такой получается вывод

Код: Выделить всё

77.232.128.131  6500/6500
через урфу все это делается ужасно долго, 1000 абонов 10 минут. кто может помочь с SQL запросом...?
думаю он должен в разы быстрее отработать.

starchik
Сообщения: 461
Зарегистрирован: Сб ноя 22, 2008 22:07

Сообщение starchik »

заменил почти все SQL запросами, в 5 раз быстрее отрабатывает скрипт, ток не приложу ума как заменить

Код: Выделить всё

$urfa_admin->rpcf_get_iptraffic_service_link&#40;$slink_id&#41;;
на SQL запрос....помогите плз, кто знает....

теперь цикл выглядит так

Код: Выделить всё

	while &#40;$row = mysql_fetch_array&#40;$result&#41;&#41; &#123;
		require_once&#40;"/netup/utm5/urfa/URFAClient.php"&#41;;
    	$urfa_admin = new URFAClient_Admin&#40;'блабла', 'блабла'&#41;;
		$slink_id = mysql_fetch_array&#40;@mysql_query&#40;"SELECT id FROM service_links WHERE user_id = '".$row&#91;0&#93;."' AND account_id = '".$row&#91;1&#93;."' AND is_deleted = 0 AND tariff_link_id > 0"&#41;&#41;;
		$isl = $urfa_admin->rpcf_get_iptraffic_service_link&#40;$slink_id&#91;0&#93;&#41;;
		$tariff_id = mysql_fetch_array&#40;@mysql_query&#40;"SELECT tariff_id FROM account_tariff_link WHERE account_id = '".$row&#91;1&#93;."' AND is_deleted = 0"&#41;&#41;;
		$speed = mysql_fetch_array&#40;@mysql_query&#40;"SELECT comment FROM services_data WHERE tariff_id = '".$tariff_id&#91;0&#93;."'"&#41;&#41;;
		$string = $isl&#91;'ip_groups'&#93;&#91;0&#93;&#91;'ip'&#93;."\t".$speed&#91;0&#93;."\n";
		$fp = fopen &#40;"file.txt", "a"&#41;;
  		fwrite &#40;$fp, $string&#41;;
  		fclose &#40;$fp&#41;;
       &#125;
Последний раз редактировалось starchik Пт дек 07, 2012 14:39, всего редактировалось 1 раз.

S_Boriskin
Сообщения: 2
Зарегистрирован: Чт авг 09, 2012 12:45

Сообщение S_Boriskin »

коллеги, задача - поменять всем абонентам тип перерасчета абонплаты на "пересчитывать и возвращать всегда.

UPDATE UTM5.periodic_service_links
set UTM5.periodic_service_links.recalc_type=2

я правильно нашел где оно живет?

Munsera
Сообщения: 126
Зарегистрирован: Чт янв 27, 2011 15:29

Сообщение Munsera »

Здравствуйте, коллеги.
Подскажите скрипт, который сбросит баланс всех пользователей в "0".
Спасибо.

starchik
Сообщения: 461
Зарегистрирован: Сб ноя 22, 2008 22:07

Сообщение starchik »

Munsera писал(а):Здравствуйте, коллеги.
Подскажите скрипт, который сбросит баланс всех пользователей в "0".
Спасибо.
включая удаленных

Код: Выделить всё

UPDATE accounts SET balance=0;
без удаленных абонов

Код: Выделить всё

UPDATE accounts SET balance=0 WHERE is_deleted=0;

Munsera
Сообщения: 126
Зарегистрирован: Чт янв 27, 2011 15:29

Сообщение Munsera »

Большое спасибо.

Munsera
Сообщения: 126
Зарегистрирован: Чт янв 27, 2011 15:29

Сообщение Munsera »

Не получается:

Код: Выделить всё

mysql> use UTM5;
Database changed
mysql> UPDATE accounts SET balance=0;    
Query OK, 120 rows affected &#40;0.12 sec&#41;
Rows matched&#58; 120  Changed&#58; 120  Warnings&#58; 0
Захожу в админку и вижу те же самые цифры на балансе. Ничего не меняется.

Закрыто