2014-11-21 84 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(或默认值)来定义应该在哪里如果该值为空。

还有另一种可能性是表中存在触发器,使值无效。

只有你可以从你的数据结构和附加到数据的含义中找出问题所在。我不知道如何解决你的问题,因为我没有真正理解你的数据模型的意义(相对于结构)。