snmax
NoDeny
Пользователь
Карма: 0
Offline
Сообщений: 25
|
|
« : 05 Октября 2009, 11:16:29 » |
|
Здравствуйте.
Кроме просмотра данных о клиенте в окне биллинга я (и наверное не только я) использую для анализа и статистики свои SQL-запросы.С выводом адресов и телефонов из USERS стало очень неудобно. Верните,плз, адреса и телефоны в основную таблицу.Изменения по ним происходят крайне редко.Адрес клиента есть основная характеристика но не дополнительная.
Спасибо.
|
|
|
Записан
|
|
|
|
Cell
NoDeny
Спец
Карма: 52
Offline
Сообщений: 1407
|
|
« Ответ #1 : 05 Октября 2009, 11:23:26 » |
|
Согласен, вообще не понял, зачем их было в дополнительные данные переносить. Не... история... ревизия это все хорошо. Но адрес - это перебор ИХМО
|
|
|
Записан
|
|
|
|
versus
|
|
« Ответ #2 : 05 Октября 2009, 11:48:31 » |
|
Вернуть не сможем! перенос адреса в доп данные вполне разумно с точки зрения уменьшения нагрузки на базу данных
|
|
|
Записан
|
|
|
|
ankos
NoDeny
Пользователь
Карма: 2
Offline
Сообщений: 45
|
|
« Ответ #3 : 05 Октября 2009, 11:54:22 » |
|
То что Адрес и телефоны хранятся в доп.даных неплохо. Может лучше отображение перенести в на страницу просмотра клиента.
Все таки так удобней. Может просто привычка!?
|
|
|
Записан
|
|
|
|
Cell
NoDeny
Спец
Карма: 52
Offline
Сообщений: 1407
|
|
« Ответ #4 : 05 Октября 2009, 12:12:43 » |
|
Вернуть не сможем! перенос адреса в доп данные вполне разумно с точки зрения уменьшения нагрузки на базу данных
Позволю себе не согласится с этим. Приведите пример, при котором простой запрос на выборку будет более ресурсоемким чем составной или с объединением таблиц. Если можно, применительно к адресу клиента.
|
|
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #5 : 05 Октября 2009, 14:45:09 » |
|
Вынос адреса и иных полей в дополнительную таблицу продиктован такими соображениями:
- невозможно (и не разумно) внести в таблицу users все поля, которые могут понадобиться конкретной сети. Например, недавно мы были в городе Новоднестровске, так там понятие "улица" вообще отсутствует. Зато есть микрорайоны. Есть сети, у которых обязательным параметром должно быть поле "город". Есть организации, которым до фени подъезд, этаж и телефон. Мы даем гибкую структуру, позволяющую настроить биллинг конкретно под себя. Вы можете создать несколько полей, хранящих, скажем несколько мак-адресов сетевых карт (допустим у клиента несколько компов и он так хочет, он платит) - создаем несколько полей mac-адреса и вуаля. Или еще реальный пример: в одной из сетей для доступа к статистике используется один пароль, а для авторизации иной, поскольку он прописан в модеме.
- единый интерфейс доступа к дополнительным полям по их алиасам, позволяет писать автономные скрипты, даже не вникая в структуру БД, просто в админке внеся новые поля заданной конфигурации.
- возможность в любой момент произвести откат к любой ревизии, просмотреть всю цепочку изменений.
Да, по-началу трудно воспринимать структуру дополнительных полей. Но если разобраться и записать в блокнотик примеры выборок, то работать с ними не составит труда.
|
|
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #6 : 05 Октября 2009, 14:49:28 » |
|
Вернуть не сможем! перенос адреса в доп данные вполне разумно с точки зрения уменьшения нагрузки на базу данных
Позволю себе не согласится с этим. Приведите пример, при котором простой запрос на выборку будет более ресурсоемким чем составной или с объединением таблиц. Если можно, применительно к адресу клиента. просто вы рассматриваете задачу слишком узко. С таблицей users работает ядро, сателлиты и т.д. Там идут постоянные выборки. Минимализация объема users - важная задача в таких условиях. Также учтите, что апдейты таблиц существенно сказываются на производительности выборок.
|
|
|
Записан
|
|
|
|
snmax
NoDeny
Пользователь
Карма: 0
Offline
Сообщений: 25
|
|
« Ответ #7 : 28 Октября 2009, 09:45:52 » |
|
Тогда помогите. Дайте пример эффективного запроса для вывода в одной таблице данных клиента:
SELECT ID,IP,FIO,улица,дом,квартира,телефоны
Спасибо.
|
|
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #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
Сообщений: 25
|
|
« Ответ #9 : 28 Октября 2009, 11:51:19 » |
|
Получение одной из позиций не вопрос. Покажите как выбрать одновременно много позиций из DOPDATA в одну таблицу одним запросом
Для чего это надо. Монтажной бригаде совершенно не обязательно видеть всю базу биллинга. Но видеть заявки на ремонт и подключения видеть необходимо. При этом такие таблицы удобны в виде представлений,дабы не публиковать всю базу в интернете.
|
|
« Последнее редактирование: 28 Октября 2009, 12:04:27 от snmax »
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #10 : 28 Октября 2009, 12:03:21 » |
|
Получение одной из позиций не вопрос. Покажите как выбрать одновременно много позиций из DOPDATA в одну таблицу одним запросом
надо было потратить 10 секунд на проверку того, что я написал выше и убедиться, что 1й запрос выдает все данные
|
|
|
Записан
|
|
|
|
versus
|
|
« Ответ #11 : 28 Октября 2009, 12:11:59 » |
|
Получение одной из позиций не вопрос. Покажите как выбрать одновременно много позиций из DOPDATA в одну таблицу одним запросом
Для чего это надо. Монтажной бригаде совершенно не обязательно видеть всю базу биллинга. Но видеть заявки на ремонт и подключения видеть необходимо. При этом такие таблицы удобны в виде представлений,дабы не публиковать всю базу в интернете.
Доп данные имеют такое понятие как темплейт, напримпер темплейт адрес, темплейт технические данные, темплейт паспортные данные и инн клиента, темплейт данных юридического лица Теперь вопрос приведите мне пример задачи которая потребует вывода всех данных со всех темплейтов одним запросом? Ну и как ответили выше просто внимательнее читать надо! первый же запрос выводил все данные из темплейта где алиас доп данных начинается с _adr_! Этого достаточно что бы вывести адрес и телефон клиента одним запросом! Хотя кто их читает те запросы!
|
|
|
Записан
|
|
|
|
snmax
NoDeny
Пользователь
Карма: 0
Offline
Сообщений: 25
|
|
« Ответ #12 : 28 Октября 2009, 12:13:56 » |
|
И всё-таки я настаиваю: покажите как вывести всю таблицу USERS (или её часть по признаку cstate =2) с указанными дополнительными параметрами. При этом подразумевается что АЙДИ_КЛИЕНТов постоянно меняются и в момент запроса не известны
|
|
|
Записан
|
|
|
|
snmax
NoDeny
Пользователь
Карма: 0
Offline
Сообщений: 25
|
|
« Ответ #13 : 28 Октября 2009, 12:16:35 » |
|
Для чего это надо. Монтажной бригаде совершенно не обязательно видеть всю базу биллинга. Но видеть заявки на ремонт и подключения видеть необходимо. При этом такие таблицы удобны в виде представлений,дабы не публиковать всю базу в интернете.
|
|
|
Записан
|
|
|
|
versus
|
|
« Ответ #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 »
|
Записан
|
|
|
|
|