我想在SQL Server 2008中构建一个父子关系,并且无法使它工作。许多到很多的亲子关系
有预设(根级节点),然后有PresetItems(子节点)。
预设只能包含PresetItems,但PresetItems可以包含其他PresetItems子节点。
许多预设可以内置在它们所包含的PresetItems变化。
的PresetItems可以以许多不同的预置被重用以构建不同预置配置。
这是用来动态创建报告。预设是报告的名称。 PresetItems是报告的各个部分。这些部分(PresetItem)就像报告的一部分,比如“年迄今图”。该PresetItem将包含文本解释,然后可以将包含该图的另一个PresetItem添加为此PresetItem部分的子项。
这个过程一直持续到报告的所有部分都被组装好。
这里有一个例子:
Client "A" Report (Preset 1)
-- Overview (PresetItem 1) - contains boilerplate and maybe some dynamic data
-- YTD Report (PresetItem 2) - contains boilerplate
-- YTD Graph (PresetItem 3) - contains a graph created dynamically from SQL Server data
-- Core References (PresetItem 4) - contains a table of dynamic data
-- Summary (PresetItem 5) - contains boilerplate
Client "B" Report (Preset 2)
-- Overview (PresetItem 1) - contains boilerplate and maybe some dynamic data
-- Monthly Balance Sheet (PresetItem 8) - contains dynamic data
-- YTD Report (PresetItem 2) - contains boilerplate
-- YTD Graph (PresetItem 3) - contains a graph created dynamically from SQL Server data
-- Summary (PresetItem 5) - contains boilerplate
...等...
你会发现,一些PresetItems能组装成许多不同的报告或预设。
这是我构建我的数据库表的方式,我不能够创建父子关系因为有许多对多表两个主键。
Preset Table
-- Id (key)
-- Name
PresetItem Table
-- Id (key)
-- Name
-- Description
-- DataResource
-- (other columns)
PresetPresetItem (many-to-many table)
-- PresetId (key)
-- PresetItemId (key)
-- ParentId
-- SortOrder
我在正确的轨道上得到我要找的结果吗?我无法在PresetItemId和ParentId之间的PresetPresetItem表中创建父子关系,因为它抱怨我省去了另一个主键(PresetId)。
我明白为什么这样做,我只是不知道如何解决它现在。如果我对这一切都做错了,请告诉我。
任何帮助表示赞赏。
谢谢。
感谢您的建议。我会试一试,看看会发生什么。顺便说一句,我正在使用SQL Server 2008. – Kahanu 2012-04-26 20:43:03
实际上再次考虑你的建议似乎不会在这种情况下工作。您的建议将使预设只包含一个PresetItem,并且它需要包含任意数量的预设项目。我创建了一些临时表,并且我无法创建一个SQL语句来返回我需要的结果。 – Kahanu 2012-04-26 21:08:28
啊哈。修改答案。 – 2012-04-26 21:09:56