我试图通过“今天”,“本周”,“本月”,“所有时间”对文章进行排序。问题是我的查询总结了一张桌子的投票,并从另一张桌子获取文章,这使我的查询变得非常复杂,而且我不确定我是否做得对。
无论如何,我有一个像http://web.com/top.php?time= 这样的页面“在这里”我使用以下代码根据用户选择的时间选择文章,而不是“一段时间这里“
$time = preg_replace('#[^a-z]#i', '', $_GET["time"]);
if (!$time) { //Today
$date = "WHERE TO_DAYS(NOW()) - TO_DAYS(stories.st_date) = 1";
}
else if ($time == "Week") { //This Week
$date = "WHERE TO_DAYS(NOW()) - TO_DAYS(stories.st_date) <= 7";
}
else if ($time == "Month") { //This Month
$date = "WHERE TO_DAYS(NOW()) - TO_DAYS(stories.st_date) <= 31";
}
else if ($time == "All") { //All Time
$date = "";
}
else {
header("Location: http://www.web.com/");
exit;
}
$sql = ("SELECT stories.*, SUM(votes.vote_value) as 'total_votes' FROM stories JOIN votes ON stories.id = votes.item_name ".$date." GROUP BY stories.id ORDER BY total_votes DESC LIMIT 10") or die (mysql_error("There was an error in connection"));
这些似乎都不起作用; D我不明白为什么,在我看来它应该,但是我再次对php和mysql相对较新。所以有人可以提出问题所在吗?
我的数据库结构可让您更好地了解系统。
故事表
投票表
答案 0 :(得分:1)
答案 1 :(得分:1)
试
SELECT stories.*, SUM(votes.vote_value) as 'total_votes'
FROM stories JOIN votes ON stories.id = votes.item_name
WHERE votes.item_name=$date
GROUP BY stories.id ORDER BY total_votes DESC LIMIT 10
或类似的,想想你想要实现什么,然后逻辑然后重写你的SQL查询 在phpmyadmin中,直到你把它输入php之前得到正确的输出。