现在又这样的一个树形结构,保存在2个表里,tabParent,tabchild。
tabParent表的字段如下
ID,PartID,BomID,NametabChild表字段如下
ID,PartID,BomID,Name以上2表,ID字段没有实际意义。PartID表示节点表示,BomID表示父子关系的表示,Name表示节点的名称。对于树的节点,每个节点有唯一的partID,如果该节点有子节点,那个则有一条记录在tabParent中,并且分配一个BomID,如果一个节点是某个节点的字节点,则在tabchild中有一条记录。对于树,根节点A下有B、C、D节点,节点D下有E、F节点,则tabParent中有2条记录,
ID,PartID,BomID,Name
1, 1,     1,     A
2, 4,     2,     DtabChild中有5条记录,
ID,PartID,BomID,Name
1, 2,     1,    B
2,  3,      1,     C
3,  4,      1,     D
4,  5,      2,     E
5,  6,      2,     F那么要读出树的结构,可以按照层次关系反复的查询2个表,有没有可能,使用一次查询,一条SQL语句,能够把表的结构查询出来了。请各位讨论,谢谢了!

解决方案 »

  1.   

    这种东西要递归查询的。
    1条SQL语句不行的。
      

  2.   

    两个表结构一样? 两个表之间是什么关系? 怎么关联?
    2005一条语句是可以查出来的.
    http://community.csdn.net/Expert/topic/4931/4931298.xml?temp=.5863153
    这个帖子中, 我和第2个处理方法使用的是2005中特有的CTE, 即为一句实现循环查询
      

  3.   

    我的意思是这种东西最好配合程序的例如TreeNode类来递归显示树状BOM结构,
    如果用SQL语句显示结果怎么能显示树状结构呢?
    如果只是简单的想知道父子关系,只需简单的:
    select p.PartID as p_PartID,p.[Name],c.PartID as c_PartID,c.[Name] 
    from tabParent p left join tabChild c on p.BomID=c.BomID
    就可以了。我估计楼主不是这个意思。
      

  4.   

    问题解决了,谢谢zjcxc(邹建)和funsuzhou(☆【处变不惊】☆),谢谢了