2011-09-17 83 views
1

我想在我的某個網頁上顯示評分最高的文章,但有一個問題。如何一次從兩個數據庫表中獲取信息? (MySQL)

我擁有所有文章的文字,作者,日期,時間在一個表等所謂故事, 我有投票的結果在另一臺名爲

問題是,當我從數據庫中獲取文章信息時,我需要通過與它對應的投票來排序(在投票表中,我有投票值和它對應的文章ID)。

所以,我怎麼能顯示從故事表的文章,但它通過投票值順序票對應於文章表?這

僞代碼可能是:

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

您應該對SQL的工作原理以及關係代數是如何成功使用SQL數據庫有了基本的瞭解。嘗試在你的空閒時間閱讀一些書籍。 – pupssman

回答

2

我們沒有看到你的表結構,但假設你們的關係是stories.article_id = votes.article_id這是一個與ORDER BY很簡單JOIN。您應該查看基本的SQL JOIN語法,因爲這是一個SQL 101問題。如果您的文章標識符列votesvotes.article_id不同,請在下面替換它。

SELECT 
    stories.*, 
    votes.votes 
FROM stories JOIN votes ON stories.article_id = votes.article_id 
ORDER BY votes.votes DESC 
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 
0
請問

這個幫助你嗎?

SELECT stories.* FROM stories JOIN votes on votes.article_id = stories.id WHERE ... 
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 
相關問題