表 flow:
flow_name seq_num ckey
abc 1 poi1122
abc 2 icr1001
abc 3 efw5601
abc 4 poi1122
ere 1 mkl1111
ere 2 ooo1222
ere 3 ooo1222
ere 4 icr1001
ere 5 ooo1222
ere 6 icr1001
ere 7 mkl1111
ere 8 ooo1222
cse 1 pff9878
cse 2 poi1122
cse 3 pwe0087
cse 4 pff9878
... ... ...
表 tdata:
flow_name dname akey bkey
ere 8-yre ooo 1222
abc 8-yre icr 1001
abc 9-oiu efw 5601
cse 1-wwq pff 9878
abc 8-yre poi 1122
... ... ... ...
表 product:
pname flow_name seq_num
fab001 abc 100
fab003 abc 150
fab201 abc 2
fab081 abc 15
yyb001 ere 221
yyb301 ere 2
yyb081 ere 1
... ... ...
条件是:由一个 dname 查出表 product 对应的 pname 记录,同时用表 flow 中相对应的 pname , ckey 的 seq_num 减去该记录的 seq_num ,因为表 flow 中存在多个 seq_num ,如果差值是负值,则一直减直到差为最小的正值,如果差不为正就返回最大的差。例如:用户输入一个 dname='8-yre'。那么,执行该 sql 就应该生成如下的记录集:
pname flow_name left_num
yyb001 ere -213 --是 flow.seq_num: 8 - product.seq_num: 221 的值
yyb301 ere 1 --是 flow.seq_num: 3 - product.seq_num: 2 的值
yyb091 ere 1 --是 flow.seq_num: 2 - product.seq_num: 1 的值
fab001 ere -96 --是 flow.seq_num: 4 - product.seq_num: 100 的值
fab003 ere -146 --是 flow.seq_num: 4 - product.seq_num: 150 的值
fab201 ere 2 --是 flow.seq_num: 4 - product.seq_num: 2 的值
fab081 ere -11 --是 flow.seq_num: 4 - product.seq_num: 15 的值
... ... ...
对自学了几天 sql 的我来说,难啊!这实际上是为了编一个这样的程序:根据 dname(表 tdata)从数据库产品(表 product)表捞取对应的所剩下的生产流程步数(表 product)。表的结构是原来就有的,又不能重新设计,请高手帮忙写一个 sql 或者高手有什么好的方法。救命啊!!!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货