我有三个桌子,我需要在搜索,电影,评论,和投票。我想对Movie.Title和Review.Subject使用类似的函数,并根据每场比赛最多的票数对它们进行排序。
选票表中有一个ReviewID,UserID,IsGood。每次用户投票时,都会使用MovieID、UserID和1或0对IsGood进行插入,1表示好的0表示坏。
因此,一次审查可能有0票赞成和反对,或5票赞成,3票反对,等等。我想按以下顺序显示结果:
评论1-10 10Good /3 3Bad
评论2-4 4Good /3 3Bad
评论3-0 0Good /0 0Bad
得票率最高的是得票率最高的,底端的是最差的。
这是我写的mysql查询,显然是错误的,但希望有人能帮助我:
mysql_query("
SELECT m.Title, r.Subject, v.ReviewID FROM Movies m
LEFT JOIN Reviews r
ON m.ID=r.MovieID
INNER JOIN Votes v
ON r.ID=v.ReviewID
WHERE (m.Title LIKE '%" . $search . "%'
OR r.Subject LIKE '%" . $search . "%')
ORDER BY MAX(COUNT(v.IsGood='1')) LIMIT 10")or die(mysql_error());发布于 2012-01-18 17:37:24
这是一个更全面的答案。要从一组连接的表行中获得和或好的选票和差的选票,您需要将相同的行组合在一起。
下面应该给你想要的结果。
mysql_query("
SELECT m.Title, r.Subject, v.TipID, sum(v.IsGood) as IsGood, sum(v.isBad) as isBad FROM Movies m
LEFT JOIN Reviews r
ON m.ID=r.MovieID
LEFT JOIN Votes v
ON r.ID=v.ReviewID
WHERE (m.Title LIKE '%" . $search . "%'
OR r.Subject LIKE '%" . $search . "%')
GROUP BY m.Title, r.Subject, v.TipID
ORDER BY sum(v.IsGood) desc, sum(v.isBad) asc LIMIT 10")or die(mysql_error());https://stackoverflow.com/questions/8914475
复制相似问题