[英]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.