2012-09-13 90 views
0

这里是我的表的安排:中级MySQL查询 - 连接两个表一起,限制结果

Posts 
    post_id 
    post_votes 

Comments 
    comment_id 
    post_id 
    comment_time 

我没能创建一个查询,执行以下操作:

  1. 选择10个帖子排序方式post_votes desc
  2. 虽然每个帖子得到5条评论

我会发布我尝试过的,如果有必要的。 我刚刚进入更复杂的查询,任何帮助或建议,非常感谢

+0

既然是PHP,你应该嵌套查询。不需要为任务使用'JOIN'。 – hjpotter92

+0

你为什么要在PHP中嵌套查询而不是加入?这似乎很落后。 –

+0

我想我需要使用JOIN,但我不确定如何为每个“Post”获取多个注释。你知道这些类型的查询有什么好的资源吗? – TaylorMac

回答

2

下面将检索10通过desc和5评论顺序desc分别命令。

select post_id,post_votes,comment_id,comment_time, 
@rn := CASE WHEN @prev_post_id = post_id THEN @rn + 1 ELSE 1 END AS rn, 
     @prev_post_id := post_id from 
    (select p.post_id,post_votes,comment_id,comment_time from 
    (SELECT post_id,post_votes from posts order by post_votes desc limit 10) p 
    left outer join 
    comments c on p.post_id=c.post_id order by post_id,comment_time desc)m 
having rn<=5 

SQL FIDDLE HERE(由降序检索3后顺序的测试样品和分别还2征求意见每个柱)。

+0

哇我有很多要了解查询。我会测试一下,谢谢你的时间和专业知识 – TaylorMac