SQL查询以在子任务行中获取父任务名

问题描述

我有一个包含此类信息的表。 在该条目中,id用作唯一ID,如果ind_id没有父任务,并且ind_id包含一个值,则ind_id为'0',它提到了父任务的entry_id。 下面的示例表。

entry_id | task            | ind_id | date
------------------------------------------------
1000     | example_1       | 0      | 22-08-2020
1012     | example_3       | 1000   | 22-08-2020
1013     | example_4       | 1000   | 22-08-2020
1004     | example_1_14    | 0      | 22-08-2020
1006     | example_2_4     | 1004   | 22-08-2020
1007     | example_8_4     | 1006   | 22-08-2020
1010     | example_4_1     | 0      | 22-08-2020

我想要这样的数据。

entry_id | task            | ind_id |parent_task_name| date
--------------------------------------------------------------
1000     | example_1       | 0      |null            | 22-08-2020
1012     | example_3       | 1000   |example_1       | 22-08-2020
1013     | example_4       | 1000   |example_1       | 22-08-2020
1004     | example_1_14    | 0      |null            | 22-08-2020
1006     | example_2_4     | 1004   |example_1_14    | 22-08-2020
1010     | example_4_1     | 0      |null            | 22-08-2020

有人会帮助我找到解决方案吗?

解决方法

这看起来像JOIN

select e.*,ep.task as parent_task_name
from entries e left join
     entries ep
     on ep.entry_id = e.ind_id
,

尝试此查询

select a.entry_id,a.task,a.ind_id,(select task from table_name where entity_id = a.ind_id) as
 parent_task_name,a.date from table_name;
,

在Oracle中使用分层查询(因为未标记数据库):

WITH CTE1 AS (
SELECT TASK,CONNECT_BY_ROOT ENTRY_ID AS root_id FROM TABLE1 A
START WITH IND_ID = 0
CONNECT BY PRIOR IND_ID = ENTRY_ID)
SELECT A.*,B.TASK AS PARENT_TASK_NAME FROM TABLE1 A LEFT OUTER JOIN CTE1 B
ON (A.IND_ID = B.ROOT_ID) 
ORDER BY A.TASK,A.IND_ID;

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...