首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用LIKE进行mysql搜索,并按选票表中大多数行/票的计数进行联接和排序?

如何使用LIKE进行mysql搜索,并按选票表中大多数行/票的计数进行联接和排序?
EN

Stack Overflow用户
提问于 2012-01-18 17:24:56
回答 1查看 1K关注 0票数 1

我有三个桌子,我需要在搜索,电影,评论,和投票。我想对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查询,显然是错误的,但希望有人能帮助我:

代码语言:javascript
复制
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());
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-18 17:37:24

这是一个更全面的答案。要从一组连接的表行中获得和或好的选票和差的选票,您需要将相同的行组合在一起。

下面应该给你想要的结果。

代码语言:javascript
复制
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());
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8914475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档