查询 三层以内的关联信息
fieldA1 表示 表tableA 中的第一个字段 其它类似
表join
--------------
name     localfield  toTable tofield  memo
123_join    fieldA1    tableB  fieldB1   A_TableB_B
345_join    fieldA1    tableC  fieldC1   A_TableC_C
234_join    fieldB1    tableE  fieldE1   B_TableE_E
33_3join    fieldE1    tableF  fieldF2   E_TableF_F 
.....
(1)当前台输入 tableA123_join    fieldA1    tableB  fieldB1   A_TableB_B
345_join    fieldA1    tableC  fieldC1   A_TableC_C
234_join    fieldB1    tableE  fieldE1   B_TableE_E  A-B-E
  A-C
 备注:当B-C或者 E-C 相连时 也要查出关联的记录 
(2)当输入tableB123_join    fieldA1    tableB  fieldB1   A_TableB_B
345_join    fieldA1    tableC  fieldC1   A_TableC_C
234_join    fieldB1    tableE  fieldE1   B_TableE_E
33_3join    fieldE1    tableF  fieldF2   E_TableF_F 
B-A-C
B-E-F(3)当输入tableC
123_join    fieldA1    tableB  fieldB1   A_TableB_B
345_join    fieldA1    tableC  fieldC1   A_TableC_C
C-A-B备注:此时只查三层以内的数据(4)当输入tableE234_join    fieldB1    tableE  fieldE1   B_TableE_E
33_3join    fieldE1    tableF  fieldF2   E_TableF_F 
123_join    fieldA1    tableB  fieldB1   A_TableB_BE-F
E-B-A
请高手出手 分数大大的如果回答的好 可另外开贴

解决方案 »

  1.   


    joinTb
    -------------------------------------------------
      name  localTable  localfield  toTable tofield 
    123_join  tableA     fieldA1    tableB  fieldB1   
    345_join  tableA     fieldA1    tableC  fieldC1   
    234_join  tableB     fieldB1    tableE  fieldE1   
    33_3join  tableE     fieldE1    tableF  fieldF2 
    23_3join  tableE     fieldE2    tableJ  fieldJ2 
    09_3join  tableE     fieldE5    tableK  fieldK2   
    09_3join  tableM     fieldM2    tableF  fieldF1   
      //查询第一层
    select * from joinTb where localTable='tableA';
    ----------------------------------------------- 
      name  localTable  localfield  toTable tofield 
    123_join  tableA     fieldA1    tableB  fieldB1   
    345_join  tableA     fieldA1    tableC  fieldC1
     //查询第二层
    select * from joinTb where localTable='tableB';
    ----------------------------------------------- 
    234_join  tableB     fieldB1    tableE  fieldE1 select * from joinTb where localTable='tableC';
    -----------------------------------------------
    无记录  
    //查询第三层
    select * from joinTb where localTable='tableE'
    ----------------------------------------------
    33_3join  tableE     fieldE1    tableF  fieldF2 
    23_3join  tableE     fieldE2    tableJ  fieldJ2 
    09_3join  tableE     fieldE5    tableK  fieldK2   
    //检测第三层节点与所有已经有关联的节点是否有联系
    select count(1) from joinTb where localTable='tableF' and toTable='tableA'
    --------------------------------------------------------------------------
    无记录
    select count(1) from joinTb where localTable='tableF' and toTable='tableB'
    --------------------------------------------------------------------------
    无记录
    select count(1) from joinTb where localTable='tableF' and toTable='tableC'
    --------------------------------------------------------------------------
    无记录
    select count(1) from joinTb where localTable='tableF' and toTable='tableE'
    --------------------------------------------------------------------------
    无记录
    select count(1) from joinTb where localTable='tableF' and toTable='tableJ'
    --------------------------------------------------------------------------
    无记录
    select count(1) from joinTb where localTable='tableF' and toTable='tableK'
    --------------------------------------------------------------------------
    无记录
    tableJ、与tableK 同上
      

  2.   

    ⊙﹏⊙b汗 多考虑了一层 
    joinTb
    -------------------------------------------------
      name  localTable  localfield  toTable tofield 
    123_join  tableA     fieldA1    tableB  fieldB1   
    345_join  tableA     fieldA1    tableC  fieldC1   
    234_join  tableB     fieldB1    tableE  fieldE1   
    33_3join  tableE     fieldE1    tableF  fieldF2 
    23_3join  tableE     fieldE2    tableJ  fieldJ2 
    09_3join  tableE     fieldE5    tableK  fieldK2   
    09_3join  tableM     fieldM2    tableF  fieldF1   
      //查询第一层
    select * from joinTb where localTable='tableA';
    ----------------------------------------------- 
      name  localTable  localfield  toTable tofield 
    123_join  tableA     fieldA1    tableB  fieldB1   
    345_join  tableA     fieldA1    tableC  fieldC1
     //查询第二层
    select * from joinTb where localTable='tableB';
    ----------------------------------------------- 
    234_join  tableB     fieldB1    tableE  fieldE1 select * from joinTb where localTable='tableC';
    -----------------------------------------------
    无记录  检测第三层
    select * from joinTb where localTable='tableE' and toTable='tableA'
    ------------------------------------------------------------------
    无记录
    select * from joinTb where localTable='tableE' and toTable='tableB'
    ------------------------------------------------------------------
    无记录
    select * from joinTb where localTable='tableE' and toTable='tableC'
    ------------------------------------------------------------------
    无记录
      

  3.   

    以table B 表根的图像展示