powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Таблица с критериями
3 сообщений из 3, страница 1 из 1
Таблица с критериями
    #39247449
the_moon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет,

помогите с решением, может есть паттерн какой нибудь.

Есть значения, которые зависят от различных критериев.

Допустим Ставка ( в смысле Зарплата) работника. Это Значение.

Есть набор критериев (Атрибуты служащего). К примеру

"Тариф"
"Выслуга"
"Регион"
"Дети"

В первом приближении получаются две таблички

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
create table stawka ( id integer not null, value double  not null );

insert into stawka values ( 1, 100.00 );
insert into stawka values ( 2, 200.00 );
insert into stawka values ( 3, 300.00 );
insert into stawka values ( 4, 150.00 );

create table krit ( name varchar(20) not null, val varchar(20) not null, stawka integer not null );

insert into krit values ( 'Тариф', 'C', 1 ) 
insert into krit values ( 'Тариф', 'C', 2 ) 
insert into krit values ( 'Выслуга', '>10', 2 ) 
insert into krit values ( 'Тариф', 'C', 3 ) 
insert into krit values ( 'Выслуга', '>10', 3 ) 
insert into krit values ( 'Регион', 'Север', 3 ) 
insert into krit values ( 'Тариф', 'C', 4 ) 
insert into krit values ( 'Выслуга', '>10', 4 ) 
insert into krit values ( 'Регион', 'Юг', 4 ) 



* То есть, если есть Работник с Тарифом "C", Выслугой лет "> 10 Лет" и работающий на Севере, то его базовая ставка будет 300 рублей.
* Для работников с такими же Тарифом и выслугой, но работающими на Востоке получат ставку 200
* Для работников с такими же Тарифом и выслугой, но работающими на Юге получат ставку 150
* Работники с меньшей выслугой, с тарифом "C" получат 100.

Два кейса.
1. Проверить, есть ли определенный набор критериев уже в базе (Проверить уникальность набора критериев)
2. По атрибутам работника выбрать подходящую ставку.

Запросы какие то сложные получаются. Может можно как то по другому сделать структуру?

Спасибо зарание
...
Рейтинг: 0 / 0
Таблица с критериями
    #39247472
the_moon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На счет поиска ставки по критерию пришол в голову такой запрос

Код: sql
1.
2.
3.
4.
5.
6.
7.
select stawka, count(1) from (
select stawka from krit where name = 'Тариф' and val = 'C'
union all
select stawka from krit where name = 'Выслуга' and val = '>10'
union all
select stawka from krit where name = 'Регион' and val = 'Север' ) s
group by stawka order by 2 desc



И брать первый результат запроса, с максимальным колличеством соотвествий.

Правда не понятно, что делать если несколько наборов подойдут. К примеру Ставка А с критериями Тариф = C и Регион = Север и Ставка Б с критериями Тариф = C и Выслуга = >10. Хотя можно этот случай проверять и выдавать предепреждение, а там пусть сами разбираются.
...
Рейтинг: 0 / 0
Таблица с критериями
    #39247482
the_moon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да, уникальность можно проверить тем же запросом сличив колличестов заданных критериев с найденным максимальным (должно совпадать).
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Таблица с критериями
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]