我想在我的某个网站页面上显示评分最高的文章,但是存在问题。
我在一个名为故事的表中包含所有文章文字,作者,日期,时间等, 我在另一张名为 votes 的表中投票结果。
问题在于,当我从数据库获取文章信息时,我需要通过与其对应的投票来订购(在投票表中我有投票价值和它对应的文章的ID)。
那么我该如何显示故事表中的文章,但是可以通过与该文章对应的投票表格中的投票值进行排序?
伪代码可以是:
SELECT * FROM stories ORDER BY //Votes from votes table where article_id corresponds to this article
答案 0 :(得分:2)
我们没有看到您的表格结构,但假设您的关系为stories.article_id = votes.article_id
,这是一个非常简单的JOIN
ORDER BY
。您应该查看基本的SQL JOIN
语法,因为这是一个SQL 101问题。如果votes
中的文章标识符列与votes.article_id
不同,请将其替换为以下内容。
SELECT
stories.*,
votes.votes
FROM stories JOIN votes ON stories.article_id = votes.article_id
ORDER BY votes.votes DESC
答案 1 :(得分:0)
假设你有一个对应于story_id的字段,例如vote_story_id,请使用:
SELECT stories.*, vote.vote_number FROM stories, votes WHERE vote_story_id = story_id ORDER BY vote.vote_number DESC
答案 2 :(得分:0)
这会对你有帮助吗?
SELECT stories.* FROM stories JOIN votes on votes.article_id = stories.id WHERE ...
答案 3 :(得分:0)
您可能为每个投票存储一行,因此您可以跟踪哪个用户进行了投票。在这种情况下,你可以这样做:
select s.*, vc.Count
from Stories s
left outer join (
select StoryID, count(*) as Count
from Votes
group by StoryID
) vc on s.StoryID = vc.StoryID
order by vc.Count desc