求每天变换一次排序显示数据?

kart15 2010-06-18 11:31:51
有两个表,
产品类别表
ID fenlei product_id
1 耳机 1,2,4
2 话筒 1,2,3


产品表
ID name
1 耳机1
2 耳机2
3 话筒1
4 耳机3

当我点击页面的分类“耳机”时,弹出一个页面显示分类为“耳机”的产品(这一步很容易实现),但要求,如果“耳机”分类里面包含三个产品,就三天循环,每天显示产品的排序为,第一天的排序为,“1,2,4”,第二天为“2,1,4”,第三天的排序为“4,1,2”

请问这个排序要怎么整哦,可能“耳机”分类包含的产品为4,个甚至更多,包含几个就几天循环排序,每天排序的就是上面的那个方法排


...全文
123 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
鸣宇淳 2010-07-17
  • 打赏
  • 举报
回复

我刚遇到这个问题,解决了。
如下:

SELECT ID from 产品表 order by (DATEPART(day, getdate())-cast(right(cast(ID as varchar(20)),1) as int))%4
根据自己的需要,替换以上红色部分就行了

4 是以三天一个周期 ,你可以设置成11,就是以10天一个周期

我刚遇到的是每天都不同,EntId字段尾号与当前日期尾号相同。我的原来语句是这样写的:

SELECT EntID from EntMember order by (DATEPART(day, getdate())+1-cast(right(cast(EntID as varchar(20)),1) as int))%11
kart15 2010-06-18
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sql77 的回复:]
SELECT * FROM TB ORDER BY NEWID()

随机排序,


你那样的要求,什么是第一天,什么是第二天?
[/Quote]

如果有三个产品“1,2,3”
第一天,"1,2,3"第二天,“2,3,1”第三天“3,1,2”
有个字段记录最后更新产品分类的时间,
SQL77 2010-06-18
  • 打赏
  • 举报
回复
SELECT * FROM TB ORDER BY NEWID()

随机排序,


你那样的要求,什么是第一天,什么是第二天?
kart15 2010-06-18
  • 打赏
  • 举报
回复
?????
kart15 2010-06-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 cshu5302930 的回复:]
你说的问题不是很清楚,你排序根据什么来排?就算你3个产品是1、2、3 那么按照三天排序也是有不只三种排序1、2、3,1、3、2,2、1、3,2、3、1。。。。。,如果你是想每天把一个产品放第一位的话,轮换做第一位,那么可以考虑在程序里对取出来产品列表做处理。
[/Quote]

我是这么想的,问题是怎么处理
kart15 2010-06-18
  • 打赏
  • 举报
回复
不是有排序根据了吗?
如果是“1,2,3”就是这样啊!
第一天,"1,2,3"第二天,“2,3,1”第三天“3,1,2”
cshu5302930 2010-06-18
  • 打赏
  • 举报
回复
你说的问题不是很清楚,你排序根据什么来排?就算你3个产品是1、2、3 那么按照三天排序也是有不只三种排序1、2、3,1、3、2,2、1、3,2、3、1。。。。。,如果你是想每天把一个产品放第一位的话,轮换做第一位,那么可以考虑在程序里对取出来产品列表做处理。
kart15 2010-06-18
  • 打赏
  • 举报
回复
求助ING

62,254

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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