我有一个相当复杂的数据库问题,所以我会尽量详细解释。
我有一个名为TypeAttributes的表。
typeID,attributeID,valueINT
从这个表中我想提取一个具有6个属性ID的特定类型。
所以,我希望从搜索typeID的查询中得到类似的东西,在下面的例子中类型ID = 11446
typeID, attributeID, valueINT
11446 182 3000
11446 183 3001
11446 184 3002
11446 277 5
11446 278 2
11446 279 2
根据这些信息,我希望再次运行上述查询,但使用attributeID的182,183和184的valueINT作为要查询的typeID。所以,那么我最终应该得到一个像这样的表:
typeID, attributeID, valueINT
11446 182 3000
11446 183 3001
11446 184 3002
11446 277 5
11446 278 2
11446 279 2
3000 182 1000
3000 183 1001
3000 277 5
3000 278 5
3001 182 51951
3001 277 3
3002 182 1000
3002 277 2
最后,我希望拥有的是所有先决条件typeID,182属性值(实际上是一种感兴趣的属性),以及它的辅助属性(277)。
然后,根据这些数据,我应该能够简单地从一种项目类型构建信息层次结构。 IE浏览器。我选择项目类型11446,并且它一直在通过树,直到没有必要条件。
这可以完全在SQL中完成输出这样的表吗?
我希望这对某人有意义。
亲切的问候
PS。
作为旁注,属性ID绑定到另一个表,它告诉我我正在查看哪种属性,值是该属性的值,在这种情况下,valueINT实际上是另一个我希望通过完全相同的过程。
182,183和184是某些类型和277,278和279以及这些类型的乘数。
答案 0 :(得分:0)
您希望考虑使用名为modified preorder traversal的方法来存储树结构化数据 - 此方法可让您轻松地在单个查询中查找给定节点的子节点到任意深度的所有节点。
您似乎有多个树,每个树都由特定属性定义。这些属性中的每一个都将被一对值替换,以存储左右节点标识符。