有没有办法在DB2中实现多对一关系?

有没有办法在DB2中实现多对一关系?,db2,Db2,我需要创建如下数据结构: Table 1 Code, Value, Offer_ID 我正在创建一个服务,对于给定的“代码”和“值”组合,该服务必须返回我预先配置的Offer\u ID 例如: Code Value Offer_ID ------ ------- ---------- Age 30 OFF1 Age 30 OFF2 Province RM OFF2 Age 40 OFF3 Province TO

我需要创建如下数据结构:

Table 1
Code, Value, Offer_ID
我正在创建一个服务,对于给定的“代码”和“值”组合,该服务必须返回我预先配置的Offer\u ID

例如:

Code    Value  Offer_ID
------ ------- ----------
Age       30     OFF1
Age       30     OFF2
Province  RM     OFF2
Age       40     OFF3
Province  TO     OFF3
Age       40     OFF4
Province  TO     OFF4
Operator  TIM    OFF4 
呼叫服务总是通过年龄、省份和操作员值呼叫我。 如果我找到三个值的具体报价,我必须查看此表​​同时(作为OFF4),或2岁(作为OFF3)或年龄是唯一强制性的(OFF1)

因此,如果客户通过我省博和运营商风,我必须返回1

我该怎么办?如何构造表和查询

我希望我能揭露这个问题

谢谢那些帮助我的人。。。我们快疯了

试试这个:

with tab (age, province, operator, offer_id) as (values
  (30, null,  null, 'OFF1')
, (30, 'RM',  null, 'OFF2')
, (40, 'TO',  null, 'OFF3')
, (40, 'TO', 'TIM', 'OFF4')
)
, op_inp (age, province, operator) as (values
--(40, 'TO', 'TIM') --'OFF4'
(40, 'TO', 'VODAFONE') --'OFF3'
--(30, 'RM', 'VODAFONE') --'OFF2'
--(30, 'TO', 'VODAFONE') --'OFF1'
)
select offer_id /*Just for info*/, order_flag
from 
(
select t.*, 3 as order_flag
from tab t
join op_inp o on o.age=t.age and o.province=t.province and o.operator=t.operator
  union all
select t.*, 2 as order_flag
from tab t
join op_inp o on o.age=t.age and o.province=t.province --and t.operator is null
  union all
select t.*, 1 as order_flag
from tab t
join op_inp o on o.age=t.age --and t.province is null and t.operator is null
)
order by order_flag desc
fetch first 1 row only
;

以下数据应返回什么:
(年龄、省份、操作员、offet_id):(30,RM,TIM,OFF1),(30,TO,TOM,OFF2)
和用户输入:
(30,RM,TOM)
?用户输入可以是:“(30,RM,TIM)”,返回的数据必须是“OFF4”。如果用户输入为`(30,RM,沃达丰)`,则返回的数据必须为“OFF2”,因为这三个输入的组合不能识别由三个元素标识的“Offer\u ID”,而我只返回由两个元素标识的“Offer\u ID”(在本例中为“Age=30”和“Province=RM”)。如果我没有找到任何“Offer\u ID”,即使有两个输入,我也必须返回“OFF1”,它只由“Age”参数标识,问题是:用户输入的示例数据必须返回什么:
(40,'to',VODAFONE')
<代码>OFF3或
OFF4
?我补充(我为不准确表示歉意)我可能会有一个请求“(35,null,TIM,OFF5)”和“(null,BO,沃达丰,OFF6)”。非常感谢。