三级联动在一个表格里面 怎么链表查询呢

img

现在要在另一张详情表中查出他的三个类型 怎么查询呢 望指点一哈 最好能写出来

oracle的话 connect by可以递归查询,sqlserver可以with写递归,mysql就要借助骚玩法了,加一个字段,把父路径存起来,比如你的16,就要多加一列2,6,16, 这样就变成这一列like就行了(mysql8的话,当我没说)


SELECT t1.*,t2.*,t3.* FROM table_name t
JOIN table_name1 t1 ON t.id1=t1.id
JOIN table_name1 t2 ON t.id2=t2.id
JOIN table_name1 t3 ON t.id3=t3.id

主表为table_name t,关联的表为table_name1,join了3次 分别关联了t的id1、id2、id3字段
如果 各个关联都是保证能查到数据的话 直接用join即可
如果 t的id1、id2、id3可能为空 把join换成left join即可
当然left join 性能可能是个问题
最好是业务上去分开查询 再组装

哪个字段是依赖关系

需求是啥?是三级联动联表查询,还是另一张详情表查出他的三个类型。
如果是三级联动都是在一个表里关联查询,可以这样:

SELECT t1.*,t2.*,t3.* FROM table_name t1
JOIN table_name t2 ON t1.parent_id=t2.id
JOIN table_name t3 ON t2.parent_id=t3.id

table_name为同一个表