MySQL循环查询/深入挖掘

时间:2011-10-06 15:31:03

标签: php mysql database

我有一个相当复杂的数据库问题,所以我会尽量详细解释。

我有一个名为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以及这些类型的乘数。

1 个答案:

答案 0 :(得分:0)

您希望考虑使用名为modified preorder traversal的方法来存储树结构化数据 - 此方法可让您轻松地在单个查询中查找给定节点的子节点到任意深度的所有节点。

您似乎有多个树,每个树都由特定属性定义。这些属性中的每一个都将被一对值替换,以存储左右节点标识符。