我想在我的一个网站页面上显示排名靠前的文章,但是有一个问题。
我有所有的文章文本,作者,日期,时间等在一个名为故事表,我在另一个名为votes的表中有投票结果。
问题是,当我从数据库中获得文章信息时,我需要根据与之对应的投票来排序(在投票表中,我有投票值和它对应的文章id)。
那么我如何显示stories表中的文章,但是根据与文章对应的votes表中的投票值排序呢?
这个的伪代码可以是:
SELECT * FROM stories ORDER BY //Votes from votes table where article_id corresponds to this article
我们没有看到您的表结构,但假设您的关系是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
假设您有一个与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
这对你有帮助吗?
SELECT stories.* FROM stories JOIN votes on votes.article_id = stories.id WHERE ...
您可能为每个投票存储一行,这样您就可以跟踪哪个用户进行了投票。在这种情况下,您可以这样做:
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