oracle中的树结构查询,带有一个整型字段和一个varchar字段
这里我需要树结构查询,一个是int,另一个是varchar字段。我不想将varchar修改为int 表结构:oracle中的树结构查询,带有一个整型字段和一个varchar字段,oracle,oracle12c,hierarchical-query,Oracle,Oracle12c,Hierarchical Query,这里我需要树结构查询,一个是int,另一个是varchar字段。我不想将varchar修改为int 表结构: ID INT SUB_TASK_ID INT TASK_ID INT PID INT WBS_ID VARCHAR WBS_TYPE VARCHAR 在这里,我正试图铸造wbs_id SELECT * from art_sub_task_allocation START WITH sub_task_id IN (929) CONNECT BY PRIOR CAST(wbs_
ID INT
SUB_TASK_ID INT
TASK_ID INT
PID INT
WBS_ID VARCHAR
WBS_TYPE VARCHAR
在这里,我正试图铸造wbs_id
SELECT *
from art_sub_task_allocation
START WITH sub_task_id IN (929)
CONNECT BY PRIOR CAST(wbs_id AS Numeric(10,0)) = sub_task_id;
但我得到了一个错误:在用户数据中通过循环连接我认为您应该使用
NOCYCLE
SELECT *
FROM art_sub_task_allocation
START WITH sub_task_id IN (929)
CONNECT BY NOCYCLE PRIOR CAST (wbs_id AS NUMERIC (10, 0)) = sub_task_id;
您也可以使用来编辑编号
,而不是CAST
PRIOR TO_NUMBER (wbs_id) = sub_task_id
我认为你应该使用
NOCYCLE
SELECT *
FROM art_sub_task_allocation
START WITH sub_task_id IN (929)
CONNECT BY NOCYCLE PRIOR CAST (wbs_id AS NUMERIC (10, 0)) = sub_task_id;
您也可以使用来编辑编号
,而不是CAST
PRIOR TO_NUMBER (wbs_id) = sub_task_id
当我看到一个表,其中包含名为SUB_TASK_ID和TASK_ID的列时,我立即想到“复合键”。也就是说,我假设SUB_TASK_ID仅与TASK_ID唯一。如果是这种情况,您需要在connectby子句中包含TASK_ID
SELECT *
from art_sub_task_allocation
START WITH sub_task_id IN (929)
CONNECT BY PRIOR CAST(wbs_id AS Numeric(10,0)) = sub_task_id
AND PRIOR TASK_ID = TASK_ID;
当我看到一个表,其中包含名为SUB_TASK_ID和TASK_ID的列时,我立即想到“复合键”。也就是说,我假设SUB_TASK_ID仅与TASK_ID唯一。如果是这种情况,您需要在connectby子句中包含TASK_ID
SELECT *
from art_sub_task_allocation
START WITH sub_task_id IN (929)
CONNECT BY PRIOR CAST(wbs_id AS Numeric(10,0)) = sub_task_id
AND PRIOR TASK_ID = TASK_ID;
你的问题是什么?您得到的是错误还是错误的结果?请编辑您的问题以显示示例数据、预期结果以及您现在得到的结果。您面临的错误/问题是什么?还显示示例数据。错误:在用户数据中按循环连接我的wbs_id是varchar,所以树结构查询不起作用,所以我尝试转换wbs_id,它不起作用,请在(929)中选择*从art_sub_任务分配以sub_任务id开始按先前的wbs_id连接=sub_任务id;由于varchart,错误消息告诉您所谓的“树结构”不是树。在您的表中有一个循环:对于sub_task_id和wbs_id,有以下值的行:(1,2),(2,3),(3,1)(可能不是数字1,2,3,而是不同的数字,可能一个周期长于三个步骤)。您可以按照答案中的建议使用NOCYCLE;但是如果这是意外的,应该对它进行分析,如果事实上它是错误的,那么应该首先修复错误。否则就是垃圾进来,垃圾出去。你的问题是什么?您得到的是错误还是错误的结果?请编辑您的问题以显示示例数据、预期结果以及您现在得到的结果。您面临的错误/问题是什么?还显示示例数据。错误:在用户数据中按循环连接我的wbs_id是varchar,所以树结构查询不起作用,所以我尝试转换wbs_id,它不起作用,请在(929)中选择*从art_sub_任务分配以sub_任务id开始按先前的wbs_id连接=sub_任务id;由于varchart,错误消息告诉您所谓的“树结构”不是树。在您的表中有一个循环:对于sub_task_id和wbs_id,有以下值的行:(1,2),(2,3),(3,1)(可能不是数字1,2,3,而是不同的数字,可能一个周期长于三个步骤)。您可以按照答案中的建议使用NOCYCLE;但是如果这是意外的,应该对它进行分析,如果事实上它是错误的,那么应该首先修复错误。另外请注意,您可以使用
connectby\u ISCYCLE
作为列来查看循环在数据中的位置。还要注意的是,您可以使用connectby\u ISCYCLE
作为列来查看循环在数据中的位置。