有以下三个表-目录表(所有可以出售的零件),零件的零售商表格(零售商销售的零件,被编目为有效的零件),零售商表格,他们已经出价的零件(零件通常不出售,但零售商可以出售它们)。
2.零售商零件表中的价格将按价格顺序(最低者优先)呈现给用户。3.如果零售商通常不销售某个部件,但可以销售该部件,则他可以出价最低的价格,但我们希望向用户提供最高的出价,但低于通常通过零售销售的最低价格。
如果Rp1..3 = 10,34,56,BP1 = 5,则竞价零售商1的售价为9.99 (10-0.01)。
如果BP1 = null,则售价为10 (通过R1)如果BP1 = 12,则售价为10 (通过R1)
如果有几个零售商竞价,那么选择最低价格的零售商,但使用相同的价格-0.01来计算实际价格。
我一直在使用目录表和零售商表,这一切工作,但出价表给我带来了一些问题。为了避免编程更改,我希望只保留sql中的更改,这样系统就可以保持不变。
我有我的尝试在下面不工作,但我认为它基本上是正确的,除了语法错误和0.01的计算不包括或选择时,我们有多个投标人。
select trp.ManPartNumber, r.retailername,r.retailerid,
trp.retailerparturl, trp.partprice from trahanretailerpart trp inner
join trahanpart tp on trp.manpartnumber = tp.manpartnumber and
trp.manpartnumber = 'PM BAS C' and trp.currentpart = 1 and
trp.currencyid = 1 inner join trahanretailer r on trp.retailerid =
r.retailerid inner join trahanshop s on s.shopid= trp.shopid and
s.shopname = 'Bristan' as retailerparts outer join on ( select
trp.ManPartNumber, r.retailername, r.retailerid, 'soogr.com' as
retailerparturl, trp.minpartprice as partprice from trahanbestprice
trp inner join trahanpart tp on trp.manpartnumber = tp.manpartnumber
and trp.manpartnumber = 'PM BAS C' and trp.liveprice = 1 and
trp.currencyid = 1 inner join trahanretailer r on trp.retailerid =
r.retailerid inner join trahanshop s on s.shopid= trp.shopid and
s.shopname = 'Bristan') as minpriceparts on minpriceparts.partprice <
retailerparts.partprice and retailerparts.retailerid !=
minpriceparts.retailerid order by minpriceparts.partprice asc,
retailerparts.partprice asc 因此,trahanpart是目录表,trahanretailerpart是零售商表,trahanpart价格是投标表。Trahanshop和trahanretailer仅用于品牌和零售商名称。
有谁有什么想法吗?
发布于 2015-11-03 23:05:30
我使用了一个UNION,然后在代码中使用了一些处理逻辑来删除重复的行,从而解决了这个问题。这一切都很好用,我对它进行了测试。
https://stackoverflow.com/questions/33496311
复制相似问题