You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何同时显示子节点与孙节点?SQL查询仅获孙节点标题求助

解决方案:同时获取子节点与孙节点的标题

我来帮你调整查询语句,让它能同时返回子节点和孙节点的标题~

你的原查询只关联到了孙节点的object_data表,缺少了子节点对应的对象数据关联,所以拿不到子节点标题。下面是修改后的两种方案:

方案1:仅返回有符合条件孙节点的子节点信息

这个方案会只显示那些存在type='tst'孙节点的子节点,用显式JOIN让逻辑更清晰:

SELECT 
    h.title AS 子节点标题,
    g.title AS 孙节点标题
FROM 
    object_data a
JOIN object_reference b ON a.obj_id = b.obj_id
JOIN tree c ON b.ref_id = c.parent
JOIN object_reference d ON c.child = d.ref_id
JOIN object_data h ON d.obj_id = h.obj_id -- 新增:关联子节点的对象数据
JOIN tree e ON d.ref_id = e.parent
JOIN object_reference f ON e.child = f.ref_id
JOIN object_data g ON f.obj_id = g.obj_id
WHERE 
    g.type = 'tst' 
    AND a.obj_id = 3217;

方案2:返回所有子节点(含无匹配孙节点的情况)

如果需要展示所有子节点(哪怕没有符合type='tst'的孙节点),可以用LEFT JOIN配合COALESCE处理空值:

SELECT 
    h.title AS 子节点标题,
    COALESCE(g.title, '无匹配孙节点') AS 孙节点标题
FROM 
    object_data a
JOIN object_reference b ON a.obj_id = b.obj_id
JOIN tree c ON b.ref_id = c.parent
JOIN object_reference d ON c.child = d.ref_id
JOIN object_data h ON d.obj_id = h.obj_id
LEFT JOIN tree e ON d.ref_id = e.parent
LEFT JOIN object_reference f ON e.child = f.ref_id
LEFT JOIN object_data g ON f.obj_id = g.obj_id AND g.type = 'tst' -- 将type条件移到JOIN中,避免过滤子节点
WHERE 
    a.obj_id = 3217;

关键修改点

  • 新增了object_data h的关联,通过d.obj_id = h.obj_id获取子节点的对象信息,从而拿到子节点标题
  • 把原查询的隐式JOIN改成显式JOIN ... ON,逻辑更直观,后续维护也更方便

内容的提问来源于stack exchange,提问作者Gautham Goud

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:25:45