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