2017-08-15 52 views
0

你能幫助我用下面的查詢:。如何生成SQL嵌套JSON

我有兩個表

[sDocumentManagement] [tDocuments]

[sDocumentManagement] [tDocumentAttachments]

文檔表中的每個條目都是針對不同的Document,PK是DocumentID。在DocumentAttachments的表格中,我們可以有一個或多個FK-DocumentID附件。

我想達到的是以下幾點。

[ 
    { 
    DocumentID: 1, 
    Something: 'blb', 
    Attachments: [ 
     { 
     AttachmentID: 1, 
     SomethingElse: '23232' 
     } 
    ] 
    }, 
    { 
    DocumentID: 2, 
    Something: 'blb', 
    Attachments: [ 
     { 
     AttachmentID: 12, 
     SomethingElse: '23232' 
     }, 
     { 
     AttachmentID: 13, 
     SomethingElse: '23232' 
     } 
    ] 
    } 
] 

我想從兩個表中獲取所有信息。

我嘗試以下查詢

SELECT @DocumentsJSON = (
     SELECT * 
     FROM [sDocumentManagement].[tDocuments] 
     LEFT JOIN [sDocumentManagement].[tDocumentAttachments] ON [tDocuments].DocumentID = [tDocumentAttachments].DocumentID 
    FOR JSON PATH 
    ) 




    SELECT @DocumentsJSON = (
    SELECT 
    (
     SELECT * 
     FROM [sDocumentManagement].[tDocumentAttachments] 
     WHERE [tDocumentAttachments].DocumentID = [tDocuments].DocumentID 
     FOR JSON PATH 
    ) Attachments 
    , * 
    FROM [sDocumentManagement].[tDocuments] 
    FOR JSON PATH 
    ) 
+0

你能證明你到目前爲止所嘗試過的嗎? – Badiparmagi

+0

我試過這兩個查詢,但仍沒有測試它們(檢查原始帖子) – VBORISOV

回答

0

好吧,我發現了一個解決方案:

SELECT @DocumentsJSON = (
     SELECT *, 
     (
     SELECT * FROM [sDocumentManagement].[tDocumentAttachments] ATTACHMENTS 
     WHERE ATTACHMENTS.DocumentID = DOCS.DocumentID 
     FOR JSON AUTO 
     ) DocumentAttachments 
     FROM [sDocumentManagement].[tDocuments] DOCS 
     WHERE DOCS.OrganizationID = @OrganizationID 
     FOR JSON PATH, ROOT('Documents') 
) 

但還有另一個問題。

無論我宣佈@DocumentsJSON的NVarChar(MAX)輸出, 的SQL,則返回只爲DocumentsJSON 4500characters? 任何想法問題在哪裏?