Биллинговая система Nodeny
02 Мая 2024, 18:14:50 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Прекращена поддержка версии Nodeny 49
 
   Начало   Помощь Поиск Войти Регистрация  
Страниц: [1] 2
  Печать  
Автор Тема: Запрос к dopvalues  (Прочитано 7848 раз)
Suicid1g
Пользователь
**

Карма: 0
Offline Offline

Сообщений: 7


Просмотр профиля Email
« : 11 Октября 2012, 14:25:04 »

Всем привет, замучался с дополнительными данными:
там хранится точка подключения и порт в 2х полях.
хочу выбрать юзеров подключенных "в тот вон порт, вон в том коммутаторе"
Записан
0xbad0c0d3
гуру nodeny )
NoDeny
Спец
*

Карма: 116
Offline Offline

Сообщений: 1059



Просмотр профиля
« Ответ #1 : 11 Октября 2012, 15:15:12 »

зачем там хранить точку подключения? Если для этого есть колонка в таблице users? oO
Записан
Suicid1g
Пользователь
**

Карма: 0
Offline Offline

Сообщений: 7


Просмотр профиля Email
« Ответ #2 : 11 Октября 2012, 16:10:36 »

Опечаточка: не точка подключения, а ип коммутатора куда воткнули клиента
Но смысл вопроса от этого не меняется: как найти в этой таблице по 2м параметрам
« Последнее редактирование: 11 Октября 2012, 16:12:27 от Suicid1g » Записан
0xbad0c0d3
гуру nodeny )
NoDeny
Спец
*

Карма: 116
Offline Offline

Сообщений: 1059



Просмотр профиля
« Ответ #3 : 11 Октября 2012, 16:24:18 »

подзапросами ищем сначала всех на свитче, потому что их, вероятнее, будет меньше, а потом смотреть у кого интересующий нас порт.
Записан
stix
NoDeny
Спец
*

Карма: 72
Offline Offline

Сообщений: 1872


Nodeny Support Team

205539
Просмотр профиля
« Ответ #4 : 11 Октября 2012, 16:27:22 »

я бы сделал через функцию
« Последнее редактирование: 11 Октября 2012, 16:30:16 от stimels » Записан
Suicid1g
Пользователь
**

Карма: 0
Offline Offline

Сообщений: 7


Просмотр профиля Email
« Ответ #5 : 11 Октября 2012, 17:01:10 »

подзапросами ищем сначала всех на свитче, потому что их, вероятнее, будет меньше, а потом смотреть у кого интересующий нас порт.
Код:
SELECT * FROM dopvalues WHERE dopfield_id=6 and field_value=$F{port} AND parent_id IN 
(SELECT DISTINCT parent_id FROM dopvalues WHERE dopfield_id=5 AND field_value='$sw_ip')
ORDER BY revision DESC

потом брать 1ю запись
так? если так, то если пользователь был на 1м порту, потом переключили на 2й, то при запросе информации о порте 1 покажет что там этот юзер
« Последнее редактирование: 11 Октября 2012, 17:03:59 от Suicid1g » Записан
0xbad0c0d3
гуру nodeny )
NoDeny
Спец
*

Карма: 116
Offline Offline

Сообщений: 1059



Просмотр профиля
« Ответ #6 : 11 Октября 2012, 17:30:39 »

Так, да не так... Версия, я так думаю не 50.33.
потому нужно связывать по ревизии, а не по parent_id
Код:
SELECT * FROM dopvalues WHERE dopfield_id=6 and field_value=$F{port} AND revision IN 
(SELECT dv.revision FROM dopvalues dv INNER JOIN rev_users r ON r.rev=dv.revision WHERE dv.dopfield_id=5 AND dv.field_value='$sw_ip' AND r.template_num=1)
типа так, только смотря в каком шаблоне находятся эти поля: (5, 6) template_num=1 это "Технические данные"
Записан
Suicid1g
Пользователь
**

Карма: 0
Offline Offline

Сообщений: 7


Просмотр профиля Email
« Ответ #7 : 12 Октября 2012, 09:13:15 »

ну судя по подфоруму у меня не 50 nodeny Смеющийся
да, поля находятся в тех. данных
Код:
INNER JOIN rev_users r ON r.rev=dv.revision WHERE dv.dopfield_id=5 AND dv.field_value='$sw_ip' AND r.template_num=1)
не имеем такой таблицы:(
Записан
Suicid1g
Пользователь
**

Карма: 0
Offline Offline

Сообщений: 7


Просмотр профиля Email
« Ответ #8 : 12 Октября 2012, 09:21:47 »

подсказали решение добрые люди) вот так выглядит
Код:
select parent_id
from dopvalues dv
where field_value = $F{port}
  and dopfield_id = 6  and not exists (select *  from dopvalues dvs where dvs.parent_id = dv.parent_id and dvs.dopfield_id = dv.dopfield_id and dvs.revision > dv.revision)
  and parent_id in (select parent_id
from dopvalues dv
where field_value = '$sw_ip'
  and dopfield_id = 5
  and not exists (select *  from dopvalues dvs where dvs.parent_id = dv.parent_id and dvs.dopfield_id = dv.dopfield_id and dvs.revision > dv.revision)
)
Записан
stix
NoDeny
Спец
*

Карма: 72
Offline Offline

Сообщений: 1872


Nodeny Support Team

205539
Просмотр профиля
« Ответ #9 : 12 Октября 2012, 09:46:38 »

А потом еще select name,fio from users where id = твой запрос.
Сколько времени занимает выборка?
Записан
0xbad0c0d3
гуру nodeny )
NoDeny
Спец
*

Карма: 116
Offline Offline

Сообщений: 1059



Просмотр профиля
« Ответ #10 : 12 Октября 2012, 10:07:13 »

ну судя по подфоруму у меня не 50 nodeny Смеющийся
да, поля находятся в тех. данных
Код:
INNER JOIN rev_users r ON r.rev=dv.revision WHERE dv.dopfield_id=5 AND dv.field_value='$sw_ip' AND r.template_num=1)
не имеем такой таблицы:(
50 и 49 отличаются только ограничениями, если что Подмигивающий
Записан
Suicid1g
Пользователь
**

Карма: 0
Offline Offline

Сообщений: 7


Просмотр профиля Email
« Ответ #11 : 12 Октября 2012, 10:14:30 »

Сколько времени занимает выборка?
сложно судить о времени выборки на БД с 1м пользователем В замешательстве
Записан
stix
NoDeny
Спец
*

Карма: 72
Offline Offline

Сообщений: 1872


Nodeny Support Team

205539
Просмотр профиля
« Ответ #12 : 12 Октября 2012, 10:14:52 »

Кстати в чем отличие  50.32 и 50.33 ?
Записан
elite
Начальник планеты
NoDeny
Спец
*

Карма: 52
Offline Offline

Сообщений: 1227

In LAN we trust!

358714596
Просмотр профиля
« Ответ #13 : 12 Октября 2012, 10:30:06 »

в допданных
Записан
0xbad0c0d3
гуру nodeny )
NoDeny
Спец
*

Карма: 116
Offline Offline

Сообщений: 1059



Просмотр профиля
« Ответ #14 : 12 Октября 2012, 11:23:04 »

в дополнение к:
в допданных
в 50.33 нет ревизии, точнее она еть, но она в другой таблице, которая задействуется только при просмотре истории и сохранении допланных, что значительно ускоряет и упрощает выборку полей.
Например для .33-версии выбрать актуальные данные для абона выглядит так:
Код:
SELECT dv.* FROM dopvalues dv
INNER JOIN dopfields df
ON df.id=dv.dopfield_id
WHERE df.template_num=y AND parent_id=x
где x - id абонента; y - требуемый шаблон
Записан
Страниц: [1] 2
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.20 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!