following query was developed on https://www.tutorialspoint.com/execute_sql_online.php and works as designed:
WITH helptab1
AS (SELECT "a" AS cust,
1 AS numb,
"m006" AS val
FROM dual
UNION ALL
SELECT "b" AS cust,
1 AS numb,
"m006" AS val
FROM dual
UNION ALL
SELECT "b" AS cust,
1 AS numb,
"m777" AS val
FROM dual
UNION ALL
SELECT "b" AS cust,
2 AS numb,
"m018" AS val
FROM dual
UNION ALL
SELECT "c" AS cust,
2 AS numb,
"m454" AS val
FROM dual
UNION ALL
SELECT "c" AS cust,
5 AS numb,
"m008" AS val
FROM dual
UNION ALL
SELECT "c" AS cust,
5 AS numb,
"m090" AS val
FROM dual
UNION ALL
SELECT "c" AS cust,
6 AS numb,
"m789" AS val
FROM dual
UNION ALL
SELECT "c" AS cust,
7 AS numb,
"m191" AS val
FROM dual
UNION ALL
SELECT "d" AS cust,
9 AS numb,
"m006" AS val
FROM dual
UNION ALL
SELECT "d" AS cust,
1 AS numb,
"m123" AS val
FROM dual
UNION ALL
SELECT "e" AS cust,
3 AS numb,
"m567" AS val
FROM dual
UNION ALL
SELECT "f" AS cust,
3 AS numb,
"m777" AS val
FROM dual
UNION ALL
SELECT "g" AS cust,
3 AS numb,
"m888" AS val
FROM dual
UNION ALL
SELECT "g" AS cust,
3 AS numb,
"m765" AS val
FROM dual
UNION ALL
SELECT "g" AS cust,
4 AS numb,
"m543" AS val
FROM dual
UNION ALL
SELECT "h" AS cust,
6 AS numb,
"m888" AS val
FROM dual
UNION ALL
SELECT "h" AS cust,
6 AS numb,
"m090" AS val
FROM dual
UNION ALL
SELECT "h" AS cust,
6 AS numb,
"m001" AS val
FROM dual
UNION ALL
SELECT "h" AS cust,
7 AS numb,
"m008" AS val
FROM dual
UNION ALL
SELECT "h" AS cust,
7 AS numb,
"m090" AS val
FROM dual),
helptab2
AS (SELECT /*+materialize */ DISTINCT cust,
numb,
val,
1 AS counter
FROM helptab1
WHERE val = "m765"),
basic (cust, numb, val, counter)
AS (SELECT DISTINCT cust,
numb,
val,
1
FROM helptab2
UNION ALL
SELECT DISTINCT hlp1.cust,
hlp1.numb,
hlp1.val,
counter + 1
FROM basic bas
join helptab1 hlp1
ON ( hlp1.cust = bas.cust
AND hlp1.numb = bas.numb )
OR ( hlp1.val = bas.val )
WHERE counter <= 10),
helptab3
AS (SELECT DISTINCT cust,
numb,
val,
counter
FROM basic
ORDER BY cust,
numb,
val)
SELECT DISTINCT cust,
numb,
val
FROM helptab3;
but there are two problems, the part "where counter <= 10" isn't really smart AND it can't be executed on Oracle (12g) Developer. what needs to be done that it's running on Oracle? and how to handle the recursive part, so there is no limit and no cycle?
gag?