Для таких вопросов вы должны всегда публиковать соответствующие операторы DDL и DML. Я уверен, что любой желающий ответить на вопрос оценит такие усилия. Кроме того, это предотвратило бы ошибку внешнего ключа и, вероятно, -1.
Тем не менее ... Я построил такие утверждения:
drop table tq84_equipment_component;
drop table tq84_equipment;
drop table tq84_vehicle;
create table tq84_vehicle (
vehicle_id number primary key,
vehicleName varchar2(20),
vehicleType varchar2(20)
);
create table tq84_equipment (
eqpmt_id number primary key,
vehicle_id not null references tq84_vehicle,
eqpmtName varchar2(20),
eqpmtType varchar2(20)
);
create table tq84_equipment_component (
eqpmt_cmpnt_id number primary key,
eqpmt_id not null references tq84_equipment,
eqpmtCmpntName varchar2(20),
parent_eqpmnt_id null references tq84_equipment_component
);
insert into tq84_vehicle values (80986246, 'Lorry', 'Four Wheeler');
insert into tq84_vehicle values (80986247, 'Van' , 'Four Wheeler');
insert into tq84_vehicle values (80986248, 'Bus' , 'Four Wheeler');
insert into tq84_equipment values (109846, 80986246, 'Axle Lorry', 'CAR');
insert into tq84_equipment values (109562, 80986247, 'Axle Van', 'CAR');
insert into tq84_equipment values (109587, 80986248, 'Axle Bus', 'CAR');
insert into tq84_equipment_component values (20904146, 109846, 'Truck', null);
insert into tq84_equipment_component values (20904148, 109846, 'Axle' , 20904146);
insert into tq84_equipment_component values (20904167, 109846, 'Wheel', 20904148);
insert into tq84_equipment_component values (20904177, 109846, 'Wheel', 20904148);
insert into tq84_equipment_component values (20904159, 109846, 'Axle' , 20904146);
insert into tq84_equipment_component values (20904185, 109846, 'Wheel', 20904159);
insert into tq84_equipment_component values (20904325, 109846, 'Wheel', 20904159);
insert into tq84_equipment_component values (20904147, 109846, 'Truck', null);
insert into tq84_equipment_component values (20904188, 109846, 'Axle' , 20904147);
insert into tq84_equipment_component values (20904195, 109846, 'Wheel', 20904188);
insert into tq84_equipment_component values (20904196, 109846, 'Wheel', 20904188);
insert into tq84_equipment_component values (20904189, 109846, 'Axle' , 20904147);
insert into tq84_equipment_component values (20904197, 109846, 'Wheel', 20904189);
insert into tq84_equipment_component values (20904398, 109846, 'Wheel', 20904189);
insert into tq84_equipment_component values (10904146, 109562, 'Truck', null);
insert into tq84_equipment_component values (10904148, 109562, 'Axle' , 10904146);
insert into tq84_equipment_component values (10904167, 109562, 'Wheel', 10904148);
insert into tq84_equipment_component values (10904177, 109562, 'Wheel', 10904148);
insert into tq84_equipment_component values (10904159, 109562, 'Axle ', 10904146);
insert into tq84_equipment_component values (10904185, 109562, 'Wheel', 10904159);
insert into tq84_equipment_component values (10904325, 109562, 'Wheel', 10904159);
insert into tq84_equipment_component values (10904147, 109562, 'Truck', null);
insert into tq84_equipment_component values (10904188, 109562, 'Axle' , 10904147);
insert into tq84_equipment_component values (10904195, 109562, 'Wheel', 10904188);
insert into tq84_equipment_component values (10904196, 109562, 'Wheel', 10904188);
insert into tq84_equipment_component values (10904189, 109562, 'Axle' , 10904147);
insert into tq84_equipment_component values (10904197, 109562, 'Wheel', 10904189);
insert into tq84_equipment_component values (10904398, 109562, 'Wheel', 10904189);
С этими данными, я полагаю, вы ищете что-то вроде этого:
select
eqpmt_cmpnt_id,
eqpmt_id,
eqpmtCmpntName
parent_eqpmnt_id
from
tq84_equipment_component
start with
eqpmt_id in (select eqpmt_id
from tq84_equipment
where vehicle_id = 80986246)
connect by
prior eqpmt_cmpnt_id = parent_eqpmnt_id
order by 1;
Редактировать : изменено eqpmt_id = (select ...
на eqpmt_id in (select ...