我有三张我需要用于搜索,电影,评论和投票的表格。我想为Movie.Title和Review.Subject使用LIKE函数,并按照每场比赛票数最多的顺序排列它们。如何在JOIN和ORDER BY中使用LIKE进行mysql搜索投票表中大多数行/投票数?
在投票表中有一个ReviewID,UserID,IsGood。每次用户投票时,都会使用MovieID,UserID和1或0对IsGood进行插入,1意味着好的0意味着不好。
所以一个审查可能具有0好的和坏的票,或5好的和差3,等我想显示以下顺序结果:
回顾1 - 10Good/3Bad
评分2 - 4Good/3Bad
评分3 - 0Good/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());
你需要做'm.Title,r.Subject,v.TipID'一组,或做选择,计算获得的投票数子。 – 2012-01-18 17:30:38
Thx保罗为您的回应。你能告诉我一个例子吗?也许是一个链接?我会搜索你刚才的建议。 – SReca 2012-01-18 17:33:18
尝试在ORDER BY子句前添加'GROUP BY m.Title,r.Subject,v.TipID',那应该这样做! – 2012-01-18 17:34:47