2014-01-22 36 views
0

...在查看某人的留言列表或新聞Feed中的帖子列表時,喜歡Facebook的評論預覽。SQL Server查詢 - 檢索文章列表和多個評論每篇文章預覽單個查詢?

我的數據庫目前設置有一個表articles,主鍵爲articleID

我有comments與主鍵commentID和外鍵articleID到適當的文章的另一個表。

當我檢索一篇關於該文章的評論文章時,這是微不足道的,並且不會給我帶來任何負擔。然而,是否可以編寫一個查詢,將這兩個表連接在一起,並檢索最近10篇文章的列表(從中構建預覽),並對每篇文章說3條評論(以創建評論預覽)?

我無法弄清楚這一點,並會喜歡有經驗的意見。歡呼和感謝!


我沒有聲望回答我自己的問題,所以我只是在這裏發佈答案。感謝兩位評論員。

哇,這是令人震驚的我以爲我明白了聯接。事情的簡單事實是我沒有。我認爲以一對多關係連接兩個表只能在左表中返回每行一行。回想起來,這顯然是錯誤的,哪一行會被退回?鑑於目前的兩個迴應,我考慮到這個問題後,發現這兩篇文章使用了那些評論帶給我的想法。因此,感謝您的幫助。

How can a LEFT OUTER JOIN return more records than exist in the left table?

Select first record in a One-to-Many relation using left join

全面回答的人與這樣的新手問題,在這個蹣跚的問題...

文章表:

ArticleID----------ArticleName 
100     Art 1 
200     Art 2 

評論表:

CommentID----------ArticleID-------Comments------Date 
1      100   test   date 1 
2      100   test2  date 2 
3      100   test3  date 3 
4      100   test4  date 4 

上面引用的第二篇文章是真正解決了我的問題。就我而言,我真正需要的是這樣的:

SELECT 
TOP 10 articles.*, 
     comments.* 
    FROM articles 
    LEFT 
    JOIN comments 
    ON articles.articleID = comments.articleID 
    AND comments.commentID = 
     (SELECT TOP 3 
       commentID 
      FROM comments 
      WHERE comments.articleID = articles.articleID 
     ) 
; 

回答

0

以及一個簡單的查詢,以便兩者結合起來將是

select top 10 a.articleid, c.commentid, <other fields> 
from article a 
left join comments c on a.articleid = c.articleid 
order by <date> desc 

我使用的是左連接,這樣你仍然會返回記錄沒有任何評論。顯然你需要爲查詢做更多的工作,以便實際返回你想要的值,但這應該是你可以使用的基礎。

如果您的示例中包含更多信息,例如示例表信息,可以幫助我們爲您提供更多反饋,例如如何返回前10名。

+0

非常感謝!這幫助我得到了我需要的完整答案! –

+0

太棒了!樂於幫助。你添加到你的文章中的信息也有助於理解你的問題以及你如何發現你的解決方案! :) – rhealitycheck

0

考慮下面

ArticleID----------ArticleName 
100     Art 1 
200     Art 2 

你的文章的表結構考慮下面

CommentID----------ArticleID-------Comments------Date 
1      100   test   date 1 
2      100   test2  date 2 
3      100   test3  date 3 
4      100   test4  date 4 

您的評論的表結構試試這個查詢

SELECT TOP 3 A.ARTICLEID, C.COMMENTS FROM ARTICLE A 
LEFT JOIN COMMENTS C ON C.ARTICLEID = A.ARTICLEID WHERE A.ARTICLEID = 100 
ORDER BY C.DATE DESC 

如果這不是你在找什麼,考慮改進你的問題。

快樂SQLing ....

+0

非常感謝!這幫助我得到了我需要的完整答案! –

+0

@JamesWTaylorII乾杯人。我很高興我可以幫助.. –

相關問題