многоуровневый фильтр для поля Связь
#1
Отправлено 09 Май 2012 - 23:58
Есть таблица Покупки и подчиненная таблица Товары.
В таблице Товары есть поля:
- Торговая марка
- Тип товара
- Наполнение
Товар продается под двумя торговыми марками. (ТМ1 и ТМ2).
Есть некоторое кол-во типов товара (булочка, круасан, пирожок). При этом у разных торговых марок есть типы товара с одинаковым названием.
Так же есть несколько вариантов наполнения.(варенье, заварной крем, шоколад....)
При добавлении новой строки, в таблицу Покупки из подчиненной таблицы Товары, при помощи типа поля "связь" выбирается:
- Торговая марка (ТМ1 или ТМ2)
- Тип товара (фильтр по полю Торговая марка)
- Наполнение (Фильтр по полю Тип товара)
Напрмер запись в таблице Товары:
ТМ1 - булочка - вишневое варенье
ТМ1 - круасан - шоколад
.....
ТМ2 - булочка - вишневое варенье
Добавляем новую строку в таблицу Покупки:
- поле Торговая марка - варианты выбора:ТМ1/ТМ2 (выбираем "ТМ1")
- поле Тип товара - вырианты выбора: булочка/круасан (выбираем "булочка")
- поле Наполнение - варианты выбора: вишневое варенье/вишневое варенье
Подскажите пожалуйста как создать фильтр, который учитывал бы несколько уровней выбора (ранее выбранную Торговую марку и Тип товара)?
Спасибо!
#2
Отправлено 10 Май 2012 - 10:17
#3
Отправлено 14 Май 2012 - 22:55
Речь идет о нескольких уровнях фильторов по полю.
Из настроенных мной фильтров выборка получается не совсем корректной.
При рассматривании примера Категория/подкатегория/товар и установке фильтров:
подкатегория - фильтр по полю Категория
товар - фильтр по полу подкатегория
То возникает следующая ситуация: Если в разных категориях есть одинаковые подкатегории, то при выборе товара выборка происходит среди подкатегорий с одинаковым названием у разных категорий.
Поскажите пожалуйста пример кода для создани собcтвенного фильтра со следующей логикой, для таблицы "Покупки":
При добавлении строки, предложить на выбор значения поля "Товар" из таблицы "Продукты", у которых поле "Категория" = полю "Категория" в добавляемой строке + поле "Подкатегория" = полю "Подкатегория" в добавляемой строке.
Спасибо
#4
Отправлено 05 Май 2015 - 14:26
#5
Отправлено 05 Май 2015 - 15:59
#6
Отправлено 06 Май 2015 - 15:49
Цитата
Как вариант решения можно было бы оптимизировать след.образом.
Например:
1. Есть 3 таблицы Контрагент, Тип, и Наименование.
2. У т. Контрагенты подтаблица Тип
4. У т. Тип - подтаблица материалы
3. в т. Приход на Склад: поле Контрагент связь с т. Контрагенты; поле Тип связь с т. Тип, фильтр По полю Тип; поле Наименование - связь с т. Наименование, фильтр по полю Наименование.Тип.
То есть оптимизировать связь полей используя подчинение таблиц.
К сожалению другого варианта нет
#7
Отправлено 06 Май 2015 - 17:27
#8
Отправлено 08 Май 2015 - 13:02
Если будет возможность просто сделайте реализацию INNER JOIN.
А для одной таблицы там даже без join будет... В общем, Вы меня поняли.
В любом случае, буду рад, если рассмотрите это предложение.
#9
Отправлено 21 Май 2015 - 09:42
Добавлено:
Даже не так. По какой логике он анализируется! Это важнее.
Добавлено2: есть предположение, что с минусом - поле, с плюсом - фильтр... Надеюсь, что это может получить развитие...
Можно ли задать еще что-то?.. Вычисление, например. Или в фильтр передать какие-то значение из $line?
Сообщение отредактировал lodion: 21 Май 2015 - 10:20
#10
Отправлено 21 Май 2015 - 11:59
#11
Отправлено 21 Май 2015 - 12:49
К примеру. через интерфейс нельзя сделать правило для группы пользователей и по условию поля. А в БД нужно только поменять user['id'] на user['group_id'] - и все!
А вычисления в фильтре? Это клад! Это же возможность подтягивать значения из родительских таблиц, проверять пользователя и т.д.
А правила? Это только кажется, что они где-то там не работают. Я нашел способ регулировать возможность добавления в подтаблицы. И он не криминальный, это УЖЕ СУЩЕСТВУЮЩИЙ функционал КБ.
Таких возможностей, я уверен, - море.
Да, я понимаю, что все эти замечательные возможности могут накрыться в любой момент. Но я придумаю еще что-нибудь. В конце концов, вряд ли разработка функционала уйдет в обрезание возможностей. КБ позволяет даже сейчас намного больше, чем позволяет интерфейс.
Пожалуйста, если Вас не затруднит, напишите мне ответ каким-либо образом (личные сообщения для меня недоступны).
Да, возможно, влезание без понимания структуры все сломает, но я буду осторожен. В PHP и SQL разбираюсь.
Если есть возможность передать в фильтр значение перед его применением для поля, это было бы идеально!
#12
Отправлено 21 Май 2015 - 18:42
lodion (21 Май 2015 - 12:49) писал:
В том и дело что затруднит, т.к. это требует времени на разбирательство и писание мануала, а у меня к сожалению и других обязанностей полно (та же разработка). Я конечно обязан и тут отвечать на тех. вопросы, но только на входящие в рамки официально санкционированных действий.
lodion (21 Май 2015 - 12:49) писал:
Я с вами полностью согласен. Но как я уже сказал, текущая версия просто изначально не разрабатывалась с учетом стороннего доступа ко всем функциям, включая служебные. Данный порядок изменится только с выходом версии 3.0, которая пишется с нуля как раз уже с учетом существенно более широкой возможности для модификации. В частности там нет жесткого отделения служебных таблиц от остальных данных, все работает на едином ядре.
#13
Отправлено 22 Май 2015 - 07:44
Количество пользователей, читающих эту тему: 4
0 пользователей, 4 гостей, 0 анонимных