求算法。

Dhammacakkhu 2009-02-27 10:10:15
购物车表有两字段ProductID, SaleCount, 一个是商品编号,一个是销售数量

另外有一个特殊商品表,这些商品中有A类和B类两种产品,有字段ProductType(商品类型),ProductID(商品编号),SpecialPrice(优惠价格),

其中有一个这样的规则, 就是同时买了1个A类 + 1个B类, 那么这两个商品的价格就按照特殊商品表中的SpecialPrice价格, 否则就是正常的商品价格。

我的问题是这样的, 是否有快速的方法得出购物车中有多少个这样的优惠组合(需要考虑一种商品购买了多个数量的情况)。

谢谢大家。
...全文
106 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lgx0914 2009-03-02
  • 打赏
  • 举报
回复
关注
htl258_Tony 2009-02-27
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 dawugui 的回复:]
引用 6 楼 larruping 的回复:
另外,特殊产品表中A类和B类产品都不只有一个, 而有多个A类产品和B类产品。

如果是多个,就只能用循环来算.
况且你这是组合的问题,计算时间很恐怖的.

例如:
10个A,10个B
得取多少种组合啊?
我稍微罗列一下你就明白了.
A1 , B1
A1 , B2
...
A1 , B10
A2 , B1
A2 , B2
...
A2 , B10
...
A10 , B10
A1 , B1 , B2
A1 , B1 , B3
A1 , B1 , B10
A1 , B1 , …
[/Quote]关注
dawugui 2009-02-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 larruping 的回复:]
另外,特殊产品表中A类和B类产品都不只有一个, 而有多个A类产品和B类产品。
[/Quote]
如果是多个,就只能用循环来算.
况且你这是组合的问题,计算时间很恐怖的.

例如:
10个A,10个B
得取多少种组合啊?
我稍微罗列一下你就明白了.
A1 , B1
A1 , B2
...
A1 , B10
A2 , B1
A2 , B2
...
A2 , B10
...
A10 , B10
A1 , B1 , B2
A1 , B1 , B3
A1 , B1 , B10
A1 , B1 , B2 , B3
...
A1 , B1 , B2 , B10
这还只是取一个A的情况,如果还有多A对多B,你看看得多少?
jia_guijun 2009-02-27
  • 打赏
  • 举报
回复
create table a(productid int ,salecount int)

insert a values(123,2)
insert a values(124,6)
insert a values(125,3)

select min(salecount) from
(select salecount from a where productid =123 union all
select salecount from a where productid =125) b

bibidbzfish 2009-02-27
  • 打赏
  • 举报
回复
可以得到购物车表里面有多少个A+B的组合,余下的类别的产品。。。
bibidbzfish 2009-02-27
  • 打赏
  • 举报
回复

Select Case when A数 >= B数 Then B数 else A数 End 组合数
From (Select Sum(Salecount) A数,Productid From 购物车表 where Productid In(Select Productid From 商品表 where 类别 = ‘A’) Group by Productid
Union all
Select Sum(Salecount) B数,Productid From 购物车表 where Productid In(Select Productid From 商品表 where 类别 = ‘B’) Group by Productid)
Dhammacakkhu 2009-02-27
  • 打赏
  • 举报
回复
另外,特殊产品表中A类和B类产品都不只有一个, 而有多个A类产品和B类产品。
Dhammacakkhu 2009-02-27
  • 打赏
  • 举报
回复
谢谢楼上几位。

我就是觉得循环计算比较慢, 所以想请教一下大家是否有更好更快的方法。
shizheyangde 2009-02-27
  • 打赏
  • 举报
回复

int i=0;
if(A.count>0 & B.count>0)
{
i=A.count>B.count?A.count:B.count;
}
dawugui 2009-02-27
  • 打赏
  • 举报
回复
需要考虑一种商品购买了多个数量的情况

如果你指的是同时多个:
多个A类 + 多个B类

就难做了,需要使用循环来慢慢算了.友情帮顶
dawugui 2009-02-27
  • 打赏
  • 举报
回复
如果只是:1个A类 + 1个B类

--1
select m.ProductType , n.ProductType from
(select ProductType from 特殊商品表 where ProductType = 'A') m,
(select ProductType from 特殊商品表 where ProductType = 'B') n

--2
select m.ProductType , n.ProductType from 特殊商品表 m , 特殊商品表 n where m.ProductType = 'A' and n.ProductType = 'B'
dawugui 2009-02-27
  • 打赏
  • 举报
回复
如果只是:1个A类 + 1个B类

select m.ProductType , n.ProductType from
(select ProductType from 特殊商品表 where ProductType = 'A') m,
(select ProductType from 特殊商品表 where ProductType = 'B') n

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧