如何使用LIKE进行mysql搜索,JOIN和ORDERBY是投票表中大多数行/投票的计数


How to use LIKE for mysql search with JOIN and ORDER BY the count of most rows/votes in the vote table?

我有三个表需要在搜索中使用,电影、评论和投票。我想对Movie.Title和Review.Subject使用LIKE函数,并根据每场比赛的票数排序。

在投票表中有一个ReviewID、UserID和IsGood。每次用户投票时,都会使用MovieID、UserID和IsGood的1或0进行插入,1表示好,0表示坏。

因此,一次审查可能有0张好票和坏票,或者5张好票,3张坏票,等等。我想按以下顺序显示结果:

审查1-10 Good/3Bad

审查2-4 Good/3Bad

审查3-0良好/0广告

得票最多的比赛在顶部,得票最多的是在底部。

这是我写的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());

这里有一个更完整的答案。要从一组连接的表行中获得总票数或好票数和坏票数,需要将类似的行分组在一起。

下面的应该会为您提供所需的结果。

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());