表的结构如上.
业务是多种支付通道结算比例的构造.
tsys_channel 代表的是系统通道表(一些通道的配置信息)
tsys_channel_Ext 代表系统通道扩展表(对应通道的扩展信息)
tosm_channel代表一些商户的通道特殊结算比例
tosm_storeinfo代表商户信息
简要说一下表结构(只写出会参与的列):
tsys_channel(系统通道信息)
ID 主键
ChannelName 通道名称
Status 通道开通状态
Tsys_channel_ext(系统通道扩展表)
ID 主键,外键关联Tsys_channel的ID
Percentage 该通道结算比例
Status 该通道开启状态
Lenvel 该通道对应商家等级和Tosm_StoreInfo_Lenvel
Tosm_channel(商户特殊通道)
ID 外键关联Tsys_channel的ID
SID 外键关联tosm_storeinfo的ID
Percentage 该商户通道结算比例(特殊的,与范围的不同,属于个例)
Status 该商户持有通道开启情况
Tosm_storeinfo(商户信息)
ID 商户ID,主键
Storename 商户名称
Lenvel 商户等级(三个等级,普通,高级,钻石级)
这些参数存在一个覆盖关系.
首先,通道分等级,等级的体现就在tsys_channel_ext表里面完成的.等级对应tosm_storeinfo_lenvel
每个商户在一个等级里面,他的提成就应该对应到相应的通道比例
但是某个别商户可能有特殊关系,某个别通道价格高点,但是他还是属于他所在的级别,
这个时候就要用到tosm_channel,添加该商户的特殊通道比例.
通道存在一个覆盖关系.比如tosm_channel会覆盖tsys_channel_ext的status
目前的需求就是写几条sql
1.输入某个商家名或者商家ID,查询该商家的有效通道列表.
2.输入某个商家名或者商家ID,通道名或者通道ID,查询商家该通道的详细信息.
3.直接查询系统通道(包含扩展信息),并且按照等级排序.
if exists(select 1 from tsys_channel as a,Tosm_channel as b,Tosm_storeinfo as c, where a.ID=b.ID and b.SID=c.ID and b.Status="开启" and a.Status=="开启")
select a.ID as 'ID',b.SID as '商户id',a.ChannelName as '通道名',b.Percentage as '比例' from tsys_channel as a,Tosm_channel as b,Tosm_storeinfo as c, where a.ID=b.ID and b.SID=c.ID and b.Status="开启" and a.Status=="开启"
else
select a.ID as 'ID',b.SID as '商户id',a.ChannelName as '通道名',b.Percentage as '比例' from tsys_channel as a,Tsys_channel_ext as b,Tosm_storeinfo as c, where a.ID=b.ID and b.SID=c.ID and c.Lenvel=b.Lenvel and b.Status="开启" and a.Status=="开启"
思路 首先先判断客户是否有有效的特殊通道 有查询出来 没有则按正常路径查询
第一步 排出通道扩展表的影响 操作 ,思路就清晰一些
第二步 排出特殊通道操作