如何一次从两个数据库表中获取信息? (MySQL的)

时间:2011-09-17 15:28:43

标签: php mysql sql select

我想在我的某个网站页面上显示评分最高的文章,但是存在问题。

我在一个名为故事的表中包含所有文章文字,作者,日期,时间等, 我在另一张名为 votes 的表中投票结果。

问题在于,当我从数据库获取文章信息时,我需要通过与其对应的投票来订购(在投票表中我有投票价值和它对应的文章的ID)。

那么我该如何显示故事表中的文章,但是可以通过与该文章对应的投票表格中的投票值进行排序?

伪代码可以是:

SELECT * FROM stories ORDER BY //Votes from votes table where article_id corresponds to this article

4 个答案:

答案 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