根据主数据映射平面数据

时间:2016-12-21 15:42:42

标签: sql sql-server

如果我在MSSQL中有一个包含主数据的表,我必须映射到位于扁平树表的叶子上的对象,如下所示:

[DBO]。[flat_tree]

grand_grand_grand_parent | grand_grand_parent |        parent       |        leaf
           15            |         11         |          5          |         1
           15            |         11         |          5          |         2
           15            |         11         |          5          |         3
           15            |         11         |          5          |         4

我将父级别对象与内部联接一起使用,以将它们与主数据中的特定行匹配。这是通过将flat_tree表的每个级别与其他表中的某些属性进行匹配来完成的。

因此,如果主数据是这样的:

[DBO]。[master_data]

id | a1 | a2 | a3
 8 |  1 |  5 | 4
 6 |  7 | 15 | 20

我会从父节点进行内连接,也会对数据库中的其他表进行叶级对象,并分别将值与a1,a2和a3进行匹配,以找出叶子主数据中的匹配项。然后我将继续将leaf和id插入到具有多对多关系的匹配表中:

[DBO] [映射]

leaf | id
  1  |  8
  2  |  8
  1  |  6

目前我只是使用一堆INNER JOINS来匹配[dbo]。[flat_tree]中对象的属性与[dbo]。[master_data]中的列。有些属性还有字符串值,必须进行评估(通过逐行遍历主数据获取),如下所示:

SELECT flat_tree.leaf
FROM [dbo].[flat_tree]

INNER JOIN [dbo].[properties1]
ON properties1.id = grand_grand_grand_parent
AND properties1.type = 6
AND properties1.stuff = 'temp'

...

我的问题是将主数据映射到叶子上的最具成本效益的方法是什么?

0 个答案:

没有答案