簡體   English   中英

如何在表決表中大多數行/投票的計數中使用JOIN和ORDER BY對MySQL搜索使用LIKE?

[英]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好/ 3壞

評論2-4Good / 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());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM