|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Отображение сгрупированных записей БД
Здравствуйте, дорогие форумчане!
Мне нужна ваша помощь. В общем такая ситуация: Посоветуйте, как лучше решить такую проблему. Нужно создать справочник, для вычисления комиссии перевода для определенной суммы. Есть таблица стран, таблица валют. сделал, чтобы комиссия вычислялась по формулам, согласно интервалов(например,0-100,101-200$). Все работает. В каждой записи моей таблице тарифов есть: 1)айдишник системы; 2)айдишник страны; 3)айдишник валюты; 4)итревал(границы тарифа); 5)формула для рассчета; Но так его очень тяжело наполнять и изменять, потому что исходные данные тарифа для сист. переводов имеют вид: Россия, Украина, Белоруссия,Грузия - Доллар, Евро - от1 до100 - 5%; Россия, Украина, Белоруссия,Грузия - Доллар, Евро - от101 до 200 - 6%; и т.д. Выходит, что для данной реализации нужно заводить для каждой страны, валюты, да еще для каждого интервала новую запись и для человека, который будет с ним работать - это ад Думаю, что в бд нужно хранить также по 1 записи, но для пользователя их групировать. Тоесть загружать данные в ДС, а потом В ВТ отображать уже как одну запись. В общем нужно переделать/доделать, чтобы с ним было проще работать пользователю. Чтобы при создании/редактировании одного тарифа пользователь выбрал в ДБГридах несколько стран, потом несколько валют, интерфал и формулу комиссии - ему все отображалось в таком виде: Россия, Украина, Белоруссия,Грузия - Доллар, Евро - от1 до100 - 5%; а не в таком(хотя в базе буду хранить в таком): Россия - доллар - от1 до100 - 5%; Украина - доллар - от1 до100 - 5%; ... Россия - евро - от1 до100 - 5%; Украина - евро - от1 до100 - 5%; ... И я не знаю как лучше это лучше сделать? Опытные люди, подскажите. Последний раз редактировалось activexpoint, 24.07.2014 в 14:58. |
#2
|
||||
|
||||
Оффтоп: станная какая-то такса вырисовывается - обычно, чем больше сумма, тем меньше комиссия, это ж не ПДН
И вам не хворать. Не работают в такой системе ни айдишки, ни интервалы, это всё вообще не нужно, поскольку в БД лежит обычное наполнение, в смысле "Россия - доллар - от1 до100 - 5%"... Похоже здесь нужен такой органайз: к названию страны будут привязаны айди валюты и границы тарифа которые в свою очередь тоже должны лежать в своих таблицах, т.е. всего нужны три таблы. Тогда и при наполнении (добавлении новой страны) останется лишь добавить к её названию ID валюты (если такой нет, то задать новую) и интервал, а при выборке напр. по интервалу запросом можно сразу отобрать только те страны где действует нужный порог. Всё намного проще З.Ы. Для конкретики, пжлст, код в студию Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#3
|
|||
|
|||
Такса с головы, так, для примера.
Поясните, почему не нужны айдишники? да, в таблице будут одиночные записи для каждой страны и валюты+ еще и сист. пекреводов, но отображать пользователю нужно группой, например: WU - Россия, Украина, Белоруссия,Грузия - Доллар, Евро - от1 до100 - 5%; Хотя в бд они будут лежать одиночными записями для каждой сист. переводов, страны и валюты. При создании я дам пользователю выбрать несколько стран, валют остальное. Для него одна запись тарифа будет отображаться групой, а в базе по одной(не группой). Я не знаю, как потом при выборке с базы их группировать и отображать. В БД уже есть таблицы со всеми валютами, странами и сист. переводов. У мене мало опыта, поэтому могу не совсем верно излагать свою мысль, но, думаю, вы поймете. Последний раз редактировалось activexpoint, 25.07.2014 в 11:57. |
#4
|
||||
|
||||
Цитата:
Вне зависимости от отбражение редактирование придется делать диалогом, как я уже однажды писал. Не стоит путать форумы с богадельнями. © Bargest |
#5
|
|||
|
|||
Oracle. Использую ODAC.
Хотел сделать, чтобы было так, строка в справочнике тарифов: WU - Россия, Украина, Белоруссия,Грузия - Доллар, Евро - от1 до100 - 5%; Пользователь кликает по поле страна и появляется справочник стран с дбгридом( с мультиселектом) и выбирает несколько стран, так же и с валютами. Потом для каждой страны и валюты сохраняю по отдельности запись. Самый главный вопрос, как потом их вытянуть с бд и сгруппировать. Прочитал тему, по вашей ссылке, не совсем понял, как связать с моим вопросом. Объясните, пожалуйста. Последний раз редактировалось activexpoint, 28.07.2014 в 10:55. |
#6
|
||||
|
||||
Есть два варианта:
Не стоит путать форумы с богадельнями. © Bargest |
#7
|
|||
|
|||
Спасибо за функцию, у меня версия - 11.2. Попробую с ней. Только вопрос все-равно остался(простите если не понимаю ), как объединить если мне нужен не конкретный интервал, а все для данной системы? Для некот. систем интервалов вообще может и не быть, только процент от суммы.
Вытянуть все записи для нужной системы можно, но как их правильно сгруппировать по интервалам(для примера, смотрите начало темы). Последний раз редактировалось activexpoint, 29.07.2014 в 12:07. |
#8
|
|||
|
|||
Народ, подскажите как лучше убрать дубликаты с нескольких listagg-полей(оракл)?
|
#10
|
|||
|
|||
Вот, пожалуйста:
Код:
select ... listagg(co.country_name,',') within group (order by col.id_group_country) as country_l, listagg(cu.name_cur,',') within group (order by col.id_group_country) as currency_l, from ... where ... group ... рез: Последний раз редактировалось activexpoint, 30.12.2014 в 01:19. |