CSDN-CSDN社区-MS-SQL Server-基础类

收藏 如何根据点击次数排序[问题点数:50,结帖人:wayne23]

  • wayne23
  • (人生如梦,一樽还酹江月)
  • 等 级:
  • 结帖率:
楼主发表于:2008-05-06 09:36:21
有一个产品表(t_Product),一个点击率表(t_Click)记录该产品的点击次数,请问如何按点击率大小来给产品排序?

表结构如下:

t_Product表

proID  proName
  1      产品1
  2      产品2
  3      产品3
……

t_Click表

clickID  proID  clickRate(点击次数)
  1      1        57
  2      2        22
  3      3        110

PS:按照上面的情况,按点击率排序后产品ID的顺序应该是3,1,2
回复次数:15
  • liangCK用户头像
  • liangCK
  • (小梁 爱 兰儿 (梁爱兰))
  • 等 级:
  • 2

    2

#1楼 得分:0回复于:2008-05-06 09:38:47
order by 一下
  • areswang用户头像
  • areswang
  • (★★★★★★)
  • 等 级:
#2楼 得分:5回复于:2008-05-06 09:39:41
order by clickRate
?
  • liangCK用户头像
  • liangCK
  • (小梁 爱 兰儿 (梁爱兰))
  • 等 级:
  • 2

    2

#3楼 得分:5回复于:2008-05-06 09:39:46
select a.proid,a.proname,b.clickrate
from t_product a
join t_click b
    on a.proid=b.proid
order by b.clickrate desc
#4楼 得分:5回复于:2008-05-06 09:41:16
SQL code

create table t_Product(proid int,proname varchar(10))

insert into t_Product values(1,'产品1')
insert into t_Product values(2,'产品2')
insert into t_Product values(3,'产品3')

create table t_Click(clickid int,proid int,clickrate int)
insert into t_Click values(1,1,57)
insert into t_Click values(2,2,22)
insert into t_Click values(3,3,110)


select a.* from t_Product a left join t_Click b on a.proid=b.proid order by b.clickrate desc

proid       proname
----------- ----------
3           产品3
1           产品1
2           产品2

(3 行受影响)


  • fuanwei用户头像
  • fuanwei
  • (草原上狂奔的蜗牛)
  • 等 级:
#5楼 得分:5回复于:2008-05-06 09:41:58
SQL code
select t_Product.proName ,t_Click.proID  from t_Click
left join t_Product on t_Product.proID=t_Click.proID
order by t_Click.clickRate desc
#6楼 得分:5回复于:2008-05-06 09:42:15
SQL code
select a.proID, a.proName, isnull(b.clickRate, 0) as clickRate
from t_Product a left join t_Click b on a.proID = b.proID
order by isnull(b.clickRate, 0) desc
  • areswang用户头像
  • areswang
  • (★★★★★★)
  • 等 级:
#7楼 得分:0回复于:2008-05-06 09:43:01
倒序:order by clickRate desc
#8楼 得分:5回复于:2008-05-06 09:45:45
SQL code
create table t_Product(proid int,proname varchar(10))

insert into t_Product values(1,'产品1')
insert into t_Product values(2,'产品2')
insert into t_Product values(3,'产品3')

create table t_Click(clickid int,proid int,clickrate int)
insert into t_Click values(1,1,57)
insert into t_Click values(2,2,22)
insert into t_Click values(3,3,110)

select m.* , n.* from t_Product m, t_Click n where m.proid = n.proid order by n.clickrate desc

drop table  t_Product , t_Click

/*
proid       proname    clickid     proid       clickrate   
----------- ---------- ----------- ----------- ----------- 
3           产品3        3           3           110
1           产品1        1           1           57
2           产品2        2           2           22

(所影响的行数为 3 行)
*/

  • wayne23用户头像
  • wayne23
  • (人生如梦,一樽还酹江月)
  • 等 级:
#9楼 得分:0回复于:2008-05-06 10:22:59
我是楼主,不好意思补充一下,有一点我忘了说,我这个是在存储过程里定义的,前面已经定义语句成
declare @condition varchar(400)
declare @order varchar(400)
declare @sql varchar(2000)
……
set @condition='1=1'(构建条件字符串)
……
set @order = ''(构建排序字符串)
……
set @sql = 'select * from t_Product where ' + @condition + 'order by ' + @order

exec(@sql)

结构已经写成这样了,请问怎么样写这个@order语句呢?麻烦大家帮帮忙
  • sp4用户头像
  • sp4
  • (擅打迷踪拳)
  • 等 级:
#10楼 得分:0回复于:2008-05-06 11:01:34
declare @condition varchar(400)
declare @order varchar(400)
declare @sql varchar(2000)
……
set @condition='1=1'(构建条件字符串)
……
set @order = ' t_Click.clickRate desc'(构建排序字符串)
……
--set @sql = 'select * from t_Product where ' + @condition + 'order by ' + @order
set @sql = 'select t_Product.* from t_Product inner join t_Click on t_Product.proID=t_Click.proID where ' + @condition + 'order by ' + @order

exec(@sql)
  • sp4用户头像
  • sp4
  • (擅打迷踪拳)
  • 等 级:
#11楼 得分:20回复于:2008-05-06 11:02:55
  • sp4用户头像
  • sp4
  • (擅打迷踪拳)
  • 等 级:
#12楼 得分:0回复于:2008-05-06 11:06:15

也就是尽量定义个join变量最好

declare @condition varchar(400)
declare @order varchar(400)
declare @sql varchar(2000),@join varchar(1000)

set @condition='1=1'--(构建条件字符串)
set @order = ' t_Click.clickRate desc'--(构建排序字符串)
set @join =' inner join t_Click on t_Product.proID=t_Click.proID '
set @sql = 'select t_Product.* from t_Product '+@join+' where ' + @condition + 'order by ' + @order

exec(@sql)
#13楼 得分:0回复于:2008-05-06 16:21:16
select a.proid,a.proname,b.clickrate
from t_product a , t_click b
where a.proid=b.proid
order by b.clickrate desc
#14楼 得分:0回复于:2008-05-07 10:03:57


引用 9 楼 wayne23 的回复:
我是楼主,不好意思补充一下,有一点我忘了说,我这个是在存储过程里定义的,前面已经定义语句成
declare @condition varchar(400)
declare @order varchar(400)
declare @sql varchar(2000)
……
set @condition='1=1'(构建条件字符串)
……
set @order = ''(构建排序字符串)
……
set @sql = 'select * from t_Product where ' + @condition + 'order by ' + @order

exec(@sql)

结构已经写成这样了,…


按照大家给的方法拼就可以了
#15楼 得分:0回复于:2008-05-13 10:58:58
现在什么都不懂的,也可以上来冒充专家,随便放几句啊


有时间去看看本人纯C语言开发的网站长长见识吧:

http://cangzhuo.com
相关问题
在开始菜单的搜索栏中Name || In Folder ||…… 且点击其中一个就按其将 ...
急急急!请问如何实现表格动态排序??? Java / Web 开发- CSDN社区 ...
listview 中如何排序? Delphi / VCL组件开发及应用- CSDN社区community ...
请问hibernate 如何根据某一列的统计结果排序Java / 框架、开源- CSDN ...
DBGrid 如何点击标题进行数据排序C++ Builder / 基础类- CSDN社区 ...
这样的数组该如何排序,请高手帮忙。 VB / 基础类- CSDN社区community ...