谢谢大家的帮忙
sql2000 或者 access 的sql写法
是根据投票的结果和点击数进行又高到低的排序
他们前台做的页面是一个行业一个页面
例如:
companys 表的数据
id comname typenumber(类别) clicknum (点击数)
1 公司A 0001 536
2 公司B 0001 300
3 公司C 0002 400
4 公司D 0003 230
6 公司E 0001 630
7 公司F 0003 830
votes 投票表
主键 公司的id 票数 ip 添加时间
id comid votetxt ip addtime
1 1 1 230.263.36.5 2010-6-24 17:59
2 1 1 230.163.36.5 2010-6-24 17:59
3 2 1 230.263.36.5 2010-6-24 17:59
4 1 1 230.203.36.5 2010-6-24 17:59
5 6 1 230.263.36.5 2010-6-24 17:59
6 3 1 230.263.36.5 2010-6-24 17:59
7 1 1 230.263.36.5 2010-6-24 17:59
8 3 1 230.163.36.5 2010-6-24 17:59
9 6 1 230.263.66.5 2010-6-24 17:59
10 1 1 230.263.36.5 2010-6-24 17:59
11 2 1 230.263.36.5 2010-6-24 17:59
12 1 1 230.163.56.5 2010-6-24 17:59
13 5 1 230.263.66.5 2010-6-24 17:59
14 1 1 230.263.36.5 2010-6-24 17:59
15 2 1 230.203.36.5 2010-6-24 17:59
16 1 1 230.163.36.5 2010-6-24 17:59
17 6 1 230.263.36.5 2010-6-24 17:59
18 6 1 230.263.36.5 2010-6-24 17:59
假如我们选择 0001行业的排序
我想要的就结果是
公司名称 公司A 公司B 公司E
投票总和 8票 3票 2票
点击总和 536 300 630
就是根据投票的结果和点击数进行又高到低的排序
我该如何写sql ,谢谢
另外我的详细任务是:有三张表companys表存放公司的id和类别编号以及点击数,companystype 存放类别编号 还有一个表是votes 存放公司的id,投票时间和投票的ip,字段votetxt都是数字1,公司的人说了,就是让客户自由的对公司进行投票,一个ip下在一个小时内只能投票一次,所以我建立了三张表。
现在就是我想让列出了来0001行业并根据投票的结果和点击数进行又高到低的排序的sql
谢谢
典型的动态交叉表。
可以在googel上“交叉表”可以看到一些资料。
原理就是拼接SQL语句,需要用到存储过程。(或者在程序中进行拼接)。
http://www.cnblogs.com/athrun/archive/2008/08/16/1269190.html
分开写每个公司的,然后合并到一个表就好了
Select Companys,Sum(votetxt),chicknum From companys c inner join votes v on c.ID=v.Comid Where typenumber='0001' Group By chicknum,Companys
如果不考虑votes 投票表 出现一个小时同一IP投票现象,则楼上的已经给正解了,只是少了个排序
Select Companys,Sum(votetxt) votes,chicknum
From companys c
inner join votes v on c.ID=v.Comid
Where typenumber='0001'
Group By chicknum,Companys
Order By Sum(votetxt)
如果要考虑的话,我想只能嵌套子查询或通过function来实现了
这个需要用联合查询和,分组查询
SELECT C.COMNAME AS '公司名称',SUM(VOTETXT) as '投票总和',C.CLICKNUM as '点击总数' FROM COMPANYS C INNER JOIN VOTES V
ON C.ID=V.COMID where typenumber='0001' GROUP BY CLICKNUM,COMNAME ORDER BY SUM(VOTETXT) DESC
select comname '公司名称', sum(votetxt) '投票总和', clicknum '点击总和'
from companys,votes
where companys.id=comid and typenumber='0001'
GROUP by comname,clicknum
order by clicknum desc;