欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

高手帮帮忙,两个表的查询有关问题。group by太鸡肋了,纠结。555。不差分

更新时间: 2014-01-05 02:25:52 责任编辑: Author_N1

 

高手帮帮忙,两个表的查询问题。group by太鸡肋了,纠结求助。555。。不差分
Access数据库
有两个表。
表一:KS_product (产品表) as p

表二:KS_comment(评论表)as c
关联字段是 p.id=c.infoid
我需要实现“热门评论”这个栏目

需要取出产品表里的产品名称和评论表里面的评论“content” 其中排序要按照评论数量最多的排序,
一个产品会有很多评论。但是我只要取出产品的第一条评论

如上sql语句怎么写?
,-----------连接查询,子查询,group by 。。。我都试了。。总是有重复数据。纠结了好久、希望好心人空闲之余帮忙测试指点一下。

我很菜写了很多版本,但是结果集都有重复数据:

select p.id,p.title,c.content from KS_product as p 
inner join 
(select top 1 infoid,content,count(0) from KS_comment 
group by infoid,content 
order by count(0) desc) as c on p.id = c.infoid

版本二:

select c.infoid,c.content,p.title,p.rank from KS_product as p inner join kS_comment as c on c.infoid=p.id group by infoid,rank,title,content

.....

...

..


--参考方法--
参考下贴中的多种方法

http://topic.csdn.net/u/20091231/16/2f268740-391e-40f2-a15e-f243b2c925ab.html
[征集]分组取最大N条记录方法征集,及散分....
--参考方法--
其实LZ如果这个问题解决不了,可以换一种思考的方式嘛,你现在实现不了就是无法找到评论最多的产品,表p与表c是一对多的关系,你可以再p表里面加一个字段,记录评论数,产品的ID是唯一的,然后排序根据评论数,再根据相应的产品取出品论。当然在评论的时候要加一个操作,就是每添加一条评论,就更新一下记录。。。。本人也是新手。。。。如果方法不好,望LZ别喷。。
--参考方法--
select * from (KS_product p inner join
(SELECT * FROM KS_comment A WHERE NOT EXISTS(SELECT 1 FROM KS_comment
WHERE A.infoid=infoid AND A.ID<id)) c on p.id=c.infoid)
inner join
(select infoid,count(*) as px from KS_comment group by infoid ) d
on p.id=d.infoid order by p.id,d.px
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:25:52
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/9734/
本文WWW.DOC100.NET DOC100.NET版权所有。