2014-11-21 81 views
0

我想從多個表中插入多個記錄到多個表中的列。下面是我的查詢,但我只是將記錄插入第一列。其他列填充空值。你能讓我知道我做錯了什麼嗎?從多個表插入多個記錄到多個表中的列中

INSERT INTO [dbo].[dim_one_staging] ([Parent], [Child], [Child_Alias], [Operator]) 
    SELECT 
     p.[Parent], c.[Child], a.[Child_Alias], o.[Child_Operator] 
    FROM 
     [dbo].[Staging_Parent] AS p 
    INNER JOIN 
     [dbo].[Staging_Child] AS c ON p.[id] = c.[id] 
    INNER JOIN 
     [dbo].[Staging_Child_Alias] AS a ON c.[id] = a.[id] 
    INNER JOIN 
     [dbo].[Staging_Operator] AS o ON a.[id] = o.[id] 
+0

你能否把當前數據粘貼到表格中?所有的表都有相應的每個ID的數據? – 2014-11-21 18:43:25

+1

如果您只是運行Select查詢,它是否返回非空值? – 2014-11-21 18:44:18

回答

0

您的查詢語法正確。這並不意味着它做你想做的事。

這可能是因爲你有

,c.[Child] 
,a.[Child_Alias] 
,o.[Child_Operator] 

對符合查詢條件的其餘部分,因此空是正確的值記錄中沒有任何價值。

這可能是因爲這些字段的連接表中沒有值,但應該有值,在這種情況下,數據輸入到這些表中的方式存在一個錯誤。

或者它可能是,你正試圖從表中取值的值不是必需的,並把它們放到一個表中,因此需要使用coalesce(或默認值)來定義應該在哪裏如果該值爲空。

還有另一種可能性是表中存在觸發器,使值無效。

只有你可以從你的數據結構和附加到數據的含義中找出問題所在。我不知道如何解決你的問題,因爲我沒有真正理解你的數據模型的意義(相對於結構)。