请兄弟帮忙。具体的需求是这样:
现在有一个大型的商户门户,注册的N个商户,然后这些商户又发布了N条产品信息,然后提供一个搜索产品页面,搜索结果的规则是按级别排序(例如VIP排前等等),并且产品搜索结果集要符合一个规则(按用户级别不同,包含每个商户产品的返回结果需要小于一个与级别挂钩的数量,例如40,举个例子,A用户=VIP=40 ,意思就是说这个搜索结果的记录中A用户符合条件的记录不能大于40,别的用户都一样)。 不知道有兄弟明白我的意思吗,我对这个需求的第一反应是狗日的。 对于这个天方夜潭式的需求,不知道有那位兄弟指点下,有没有比较好的解决方法。
现在有一个大型的商户门户,注册的N个商户,然后这些商户又发布了N条产品信息,然后提供一个搜索产品页面,搜索结果的规则是按级别排序(例如VIP排前等等),并且产品搜索结果集要符合一个规则(按用户级别不同,包含每个商户产品的返回结果需要小于一个与级别挂钩的数量,例如40,举个例子,A用户=VIP=40 ,意思就是说这个搜索结果的记录中A用户符合条件的记录不能大于40,别的用户都一样)。 不知道有兄弟明白我的意思吗,我对这个需求的第一反应是狗日的。 对于这个天方夜潭式的需求,不知道有那位兄弟指点下,有没有比较好的解决方法。
create table #a (id int identity(1,1),name varchar(10),col varchar(100))insert into #a values('a','衣服')
insert into #a values('a','衣服,裤子')
insert into #a values('a','衣服,上衣')
insert into #a values('a','衣服,裤子,上衣')
insert into #a values('a','上衣')insert into #a values('b','衣服')
insert into #a values('b','衣服,裤子')
insert into #a values('b','衣服,上衣')
insert into #a values('b','衣服,裤子,上衣')
insert into #a values('b','上衣')create table #b (name varchar(10),vip int)insert into #b values('a',3)
insert into #b values('b',2)
select a.name,col from
(
select a.*,vip=(select count(1) from #a where [name]=a.name and id<=a.id) from #a a) a
inner join #b b
on a.name=b.name and a.vip<=b.vipname col
---------- -------
a 衣服
a 衣服,裤子
a 衣服,上衣
b 衣服
b 衣服,裤子
不好意识啊select a.name,col from
(
select a.*,vip=(select count(1) from #a where [name]=a.name and id<=a.id) from #a a where col like '%衣服%') a
inner join #b b
on a.name=b.name and a.vip<=b.vip
把 VIP 高的拍在前边
select a.name,col from
(
select a.*,vip=(select count(1) from #a where [name]=a.name and id<=a.id) from #a a where col like '%衣服%') a
inner join #b b
on a.name=b.name and a.vip<=b.vip order by b.vip desc