0
我有這個SQL搜索查詢的作品,但它只適用於投票表中存在投票。如何檢查MySQL搜索JOIN查詢時是否存在行?
mysql_query("SELECT m.Title, r.Subject, SUM(v.IsGood) AS Good, SUM(v.IsBad) AS Bad
FROM Movies m
JOIN Reviews r
ON m.ID=r.MovieID
JOIN Votes v
ON r.ID=v.ReviewID
WHERE (m.Title LIKE '%" . $search . "%' OR r.Subject LIKE '%" . $search . "%')
GROUP BY m.Title, r.Subject
ORDER BY SUM(v.IsGood) DESC, SUM(v.IsBad) ASC LIMIT 10")
所以我把它改成了下面這個,所以不管是否有0票,它仍然應該顯示。但它不會產生任何結果,任何人都可以告訴我我做錯了什麼?
mysql_query("SELECT m.Title, r.Subject, COUNT(v.ReviewID) AS Rvotes, SUM(v.IsGood) AS Good, SUM(v.IsBad) AS Bad
FROM Movies m
JOIN Reviews r
ON m.ID=r.MovieID
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.ReviewID
HAVING Rvotes >= 0
ORDER BY SUM(v.IsGood) DESC, SUM(v.IsBad) ASC LIMIT 10")
這有效,但現在我只得到一個結果。我有一個電影和兩個評論,如果我在搜索中輸入電影的名稱,只有其中一個評論出現,而不是兩個。我希望所有的比賽都能出現。我需要改變什麼?謝謝btw。 – SReca
我認爲你的查詢做得太多了。你可能想要備份和改進你的問題。 –
好吧,這是我原來的問題的擴展張貼在這裏:http://stackoverflow.com/questions/8914475/how-to-use-like-for-mysql-search-with-join-and-order-by-the- count-of-most-rows-v/8914664#8914664在這裏你會看到我的原始請求。 – SReca