Биллинговая система Nodeny
22 Ноября 2024, 10:41:56 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Карма: 0
Offline Offline

Сообщений: 25


Просмотр профиля Email
« : 05 Октября 2009, 11:16:29 »

Здравствуйте.

Кроме просмотра данных о клиенте в окне биллинга я (и наверное не только я) использую для анализа и статистики свои SQL-запросы.С выводом адресов и телефонов из USERS стало очень неудобно.  Верните,плз, адреса и телефоны в основную таблицу.Изменения по ним происходят крайне редко.Адрес клиента есть основная характеристика но не дополнительная.

Спасибо.
Записан
Cell
NoDeny
Спец
*

Карма: 52
Offline Offline

Сообщений: 1407



Просмотр профиля
« Ответ #1 : 05 Октября 2009, 11:23:26 »

Согласен, вообще не понял, зачем их было в дополнительные данные переносить. Не... история... ревизия это все хорошо. Но адрес - это перебор ИХМО
Записан
versus
Администратор
Спец
*****

Карма: 21
Offline Offline

Сообщений: 845


44306843
Просмотр профиля WWW Email
« Ответ #2 : 05 Октября 2009, 11:48:31 »

Вернуть не сможем! перенос адреса в доп данные вполне разумно с точки зрения уменьшения нагрузки на базу данных
Записан
ankos
NoDeny
Пользователь
*

Карма: 2
Offline Offline

Сообщений: 45


Просмотр профиля Email
« Ответ #3 : 05 Октября 2009, 11:54:22 »

То что Адрес и телефоны хранятся в доп.даных неплохо. Может лучше отображение перенести в на страницу просмотра клиента.

Все таки так удобней. Может просто привычка!?
Записан
Cell
NoDeny
Спец
*

Карма: 52
Offline Offline

Сообщений: 1407



Просмотр профиля
« Ответ #4 : 05 Октября 2009, 12:12:43 »

Вернуть не сможем! перенос адреса в доп данные вполне разумно с точки зрения уменьшения нагрузки на базу данных
Позволю себе не согласится с этим. Приведите пример, при котором простой запрос на выборку будет более ресурсоемким чем составной или с объединением таблиц. Если можно, применительно к адресу клиента.
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4790



Просмотр профиля
« Ответ #5 : 05 Октября 2009, 14:45:09 »

Вынос адреса и иных полей в дополнительную таблицу продиктован такими соображениями:

- невозможно (и не разумно) внести в таблицу users все поля, которые могут понадобиться конкретной сети. Например, недавно мы были в городе Новоднестровске, так там понятие "улица" вообще отсутствует. Зато есть микрорайоны. Есть сети, у которых обязательным параметром должно быть поле "город". Есть организации, которым до фени подъезд, этаж и телефон. Мы даем гибкую структуру, позволяющую настроить биллинг конкретно под себя. Вы можете создать несколько полей, хранящих, скажем несколько мак-адресов сетевых карт (допустим у клиента несколько компов и он так хочет, он платит) - создаем несколько полей mac-адреса и вуаля. Или еще реальный пример: в одной из сетей для доступа к статистике используется один пароль, а для авторизации иной, поскольку он прописан в модеме.

- единый интерфейс доступа к дополнительным полям по их алиасам, позволяет писать автономные скрипты, даже не вникая в структуру БД, просто в админке внеся новые поля заданной конфигурации.

- возможность в любой момент произвести откат к любой ревизии, просмотреть всю цепочку изменений.

Да, по-началу трудно воспринимать структуру дополнительных полей. Но если разобраться и записать в блокнотик примеры выборок, то работать с ними не составит труда.
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4790



Просмотр профиля
« Ответ #6 : 05 Октября 2009, 14:49:28 »

Вернуть не сможем! перенос адреса в доп данные вполне разумно с точки зрения уменьшения нагрузки на базу данных
Позволю себе не согласится с этим. Приведите пример, при котором простой запрос на выборку будет более ресурсоемким чем составной или с объединением таблиц. Если можно, применительно к адресу клиента.
просто вы рассматриваете задачу слишком узко. С таблицей users работает ядро, сателлиты и т.д. Там идут постоянные выборки. Минимализация объема users - важная задача в таких условиях. Также учтите, что апдейты таблиц существенно сказываются на производительности выборок.
Записан
snmax
NoDeny
Пользователь
*

Карма: 0
Offline Offline

Сообщений: 25


Просмотр профиля Email
« Ответ #7 : 28 Октября 2009, 09:45:52 »

Тогда помогите.
Дайте пример эффективного запроса для вывода в одной таблице данных клиента:

SELECT ID,IP,FIO,улица,дом,квартира,телефоны

Спасибо.
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4790



Просмотр профиля
« Ответ #8 : 28 Октября 2009, 10:56:49 »

Тогда помогите.
Дайте пример эффективного запроса для вывода в одной таблице данных клиента:

SELECT ID,IP,FIO,улица,дом,квартира,телефоны

Спасибо.

Код:
SELECT * FROM dopdata WHERE revision=( SELECT MAX(revision) FROM dopdata WHERE parent_id=айди_клиента AND template_num=(SELECT template_num FROM dopfields WHERE field_alias LIKE '_adr_%' LIMIT 1) )

или например получение только дома:

Код:
SELECT * FROM dopdata WHERE revision=( SELECT MAX(revision) FROM dopdata WHERE parent_id=айди_клиента AND template_num=(SELECT template_num FROM dopfields WHERE field_alias LIKE '_adr_%' LIMIT 1) ) AND field_alias LIKE '_adr_house' 
Записан
snmax
NoDeny
Пользователь
*

Карма: 0
Offline Offline

Сообщений: 25


Просмотр профиля Email
« Ответ #9 : 28 Октября 2009, 11:51:19 »

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

Для чего это надо.
Монтажной бригаде совершенно не обязательно видеть всю базу биллинга.
Но видеть заявки на ремонт и подключения видеть необходимо.
При этом такие таблицы удобны в виде представлений,дабы не публиковать всю базу в интернете.
« Последнее редактирование: 28 Октября 2009, 12:04:27 от snmax » Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4790



Просмотр профиля
« Ответ #10 : 28 Октября 2009, 12:03:21 »

Получение одной из позиций не вопрос.
Покажите как выбрать одновременно много позиций из DOPDATA в одну таблицу одним запросом
надо было потратить 10 секунд на проверку того, что я написал выше и убедиться, что 1й запрос выдает все данные
Записан
versus
Администратор
Спец
*****

Карма: 21
Offline Offline

Сообщений: 845


44306843
Просмотр профиля WWW Email
« Ответ #11 : 28 Октября 2009, 12:11:59 »

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

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

Доп данные имеют такое понятие как темплейт, напримпер темплейт адрес, темплейт технические данные, темплейт паспортные данные и инн клиента, темплейт данных юридического лица
Теперь вопрос приведите мне пример задачи которая потребует вывода всех данных со всех темплейтов одним запросом?
Ну и как ответили выше просто внимательнее читать надо! первый же запрос выводил все данные из темплейта где алиас доп данных начинается с _adr_! Этого достаточно что бы вывести адрес и телефон клиента одним запросом!

Хотя кто их читает те запросы!
Записан
snmax
NoDeny
Пользователь
*

Карма: 0
Offline Offline

Сообщений: 25


Просмотр профиля Email
« Ответ #12 : 28 Октября 2009, 12:13:56 »

И всё-таки я настаиваю:
покажите как вывести всю таблицу USERS (или её часть по признаку cstate =2)
с указанными дополнительными параметрами.
При этом подразумевается что АЙДИ_КЛИЕНТов постоянно меняются и в момент запроса не известны  
Записан
snmax
NoDeny
Пользователь
*

Карма: 0
Offline Offline

Сообщений: 25


Просмотр профиля Email
« Ответ #13 : 28 Октября 2009, 12:16:35 »

Для чего это надо.
Монтажной бригаде совершенно не обязательно видеть всю базу биллинга.
Но видеть заявки на ремонт и подключения видеть необходимо.
При этом такие таблицы удобны в виде представлений,дабы не публиковать всю базу в интернете.
Записан
versus
Администратор
Спец
*****

Карма: 21
Offline Offline

Сообщений: 845


44306843
Просмотр профиля WWW Email
« Ответ #14 : 28 Октября 2009, 12:17:34 »

И всё-таки я настаиваю:
покажите как вывести всю таблицу USERS (или её часть по признаку cstate =2)
с указанными дополнительными параметрами.
При этом подразумевается что АЙДИ_КЛИЕНТов постоянно меняются и в момент запроса не известны  

я думаю с вашими знаниями SQL вам лучше обратится не на форум, а на тематический ресурс
http://dev.mysql.com/doc/refman/5.0/en/,  мы ж НЕ обучаем работе с базой данных! за отдельные деньги я могу сделать для вас исключение  50-100 баксов за запрос
Ну или обучить поиску на форуме за каких то жалких 30 баксов
« Последнее редактирование: 28 Октября 2009, 12:20:40 от versus » Записан
Страниц: [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!