首页 新闻 会员 周边

小女子急求一个sql 的写法,谢谢

0
悬赏园豆:50 [已关闭问题]

谢谢大家的帮忙

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

  

谢谢

 

写下永远的主页 写下永远 | 初学一级 | 园豆:150
提问于:2010-06-25 10:03
< >
分享
其他回答(6)
0

典型的动态交叉表。

可以在googel上“交叉表”可以看到一些资料。

原理就是拼接SQL语句,需要用到存储过程。(或者在程序中进行拼接)。

http://www.cnblogs.com/athrun/archive/2008/08/16/1269190.html

邢少 | 园豆:10926 (专家六级) | 2010-06-25 10:26
0

分开写每个公司的,然后合并到一个表就好了

茂茂 | 园豆:2892 (老鸟四级) | 2010-06-25 11:18
0

Select Companys,Sum(votetxt),chicknum From companys c inner join votes v on c.ID=v.Comid Where typenumber='0001' Group By chicknum,Companys

Jerry.Duan | 园豆:220 (菜鸟二级) | 2010-06-25 11:27
0

如果不考虑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来实现了

Loye | 园豆:215 (菜鸟二级) | 2010-06-25 23:31
0

这个需要用联合查询和,分组查询

邓大林 | 园豆:200 (初学一级) | 2010-06-29 12:44
0
代码
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
WIN8新人 | 园豆:205 (菜鸟二级) | 2010-07-03 10:03
0

select comname '公司名称', sum(votetxt) '投票总和', clicknum '点击总和'
from companys,votes
where companys.id=comid and typenumber='0001'
GROUP by comname,clicknum
order by clicknum desc;

tiger longhu | 园豆:35 (初学一级) | 2010-07-05 16:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册