2013-10-03 26 views
0

我有2個表,第一個包含了崗位,第二個包含上崗SQL服務器:越來越多條記錄都與幾個子記錄

Posts 
------- 
[ID] int 
{Text] nvarchar(max) 
.... (some other columns...) 

Comments 
-------- 
[ID] int 
[PostID] int 
[Comment] Nvarchar(1024) 
.... (some other columns) 

我想加載上面的意見20個職位和十大意見的每篇文章。問題是因爲我要在我的頁面上顯示帖子,所以我需要在帖子後對每個帖子發表評論。

有什麼建議嗎?

+1

請不要只問我們爲你解決問題。告訴我們你是如何試圖自己解決問題的,然後向我們展示結果是什麼,並告訴我們爲什麼你覺得它不起作用。請參閱「[您嘗試過什麼?](http://whathaveyoutried.com/)」,以獲得一篇您最近需要閱讀的優秀文章。 –

回答

1

這將幫助您獲得1次旅行所需的所有數據。你DataAdapter.Fill命令應該是這樣的:

SELECT TOP 20 * FROM Posts WHERE ... 

然後在相同的命令,用分號分隔;,在你的DataSet添加你的第二個SQL,這將導致第二個表。

SELECT * 
FROM 
    (SELECT 
     *, 
     ROW_NUMBER() OVER(PARTITION BY PostID ORDER BY ID desc) RowNum 
    FROM 
     Comments 
    WHERE 
     PostID IN (SELECT TOP 20 ID FROM Posts WHERE ...) 
    ) tmp 
WHERE 
    RowNum <= 10 

該SQL將爲您提供上述所有帖子的註釋,但僅爲每個PostID的最後10個。

注意

SELECT TOP 20 ID FROM Posts WHERE ... 

應該是從你的第一個SQL語句的確切SQL除了單個返回字段是ID列。

您填寫的數據集中後,保存以後所以當記錄更改(選擇後),你就可以得到那個已經是本地您的意見

很抱歉在VB

這是數據
Dim DRs as Datarow() = {Your Dataset}.Tables(1).Select("PostID = " & {The current records ID}) 

希望這會有所幫助。它應該讓你至少指出正確的方向。

0

使用包含兩個與關係關聯的數據表的數據集。你可以通過Visual Studio設計器來實現。您也可以使用較新的實體框架。或者,您可以選擇所有帖子,然後在循環發佈帖子時,發出SQL語句以從數據庫中獲取評論(相當慢)。您也可以一次抓取所有評論,然後在循環帖子時,使用嵌套循環篩選出相應的評論。您也可以使用LINQ查詢按帖子分組評論。這種特殊的貓可以通過很多方式剝皮:-)

+0

兩個數據表當然會有關係,但是如何閱讀每篇文章的評論。我曾經想過在每篇文章發佈評論之後打開和關聯一個連接,但是會不會很慢? –