我是SQL的新手,我无法找到问题的解决方案。我有两张桌子。在表A中,我存储了很多注释,每个注释都有一个唯一的ID。
在表B中,我为每个具有日期时间的评论存储每个投票(如= 1和不喜欢= 0)。每次投票都会有一个条目,因此表A中的每条评论都会有大量的行。
我需要检索所有评论并对其进行排序,以便每周最喜欢的评论位于顶部,但我不确定如何。
这是我到目前为止所做的,但不知道如何继续:
SELECT * FROM comment INNER JOIN logs ON comment.c_id=logs.c_id WHERE logs.daterate >= DATE_SUB(CURDATE(), INTERVAL 8 DAY) AND logs.rated=1
为了澄清,我需要从过去一周内评级为1的日志中获取所有条目,并按降序排列最频繁的c_id,并为每一行获取不同的c_id ......如果这有意义
如果我说得不够清楚,请提出问题,谢谢!!
答案 0 :(得分:1)
SELECT *
FROM comment
INNER JOIN (SELECT comment.c_id,
COUNT(*) AS cnt
FROM comment
INNER JOIN logs ON comment.c_id=logs.c_id
WHERE logs.daterate >= DATE_SUB(CURDATE(), INTERVAL 8 DAY)
AND logs.rated=1
GROUP BY comment.c_id) x ON x.c_id = comment.c_id
ORDER BY x.cnt DESC
答案 1 :(得分:-1)
试试这个 -
我首先查询了日志表中的所有记录,这些记录的评级为1,从当前日期起7天,并且还根据c_id的计数进行排序。然后将其加入到COmments表中。
SELECT Comment.* FROM comment C
INNER JOIN (SELECT logs.c_id as c_id,count(logs.c_id) as logcount FROM logs
WHERE logs.rated=1
AND logs.daterate BETWEEN GETDATE() AND DATEADD(day,-7,getdate())
Group by logs.c_id
order by count(logs.c_id) desc) X
ON C.c_id = X.c_id
ORDER BY X.logcount DESC