WITH RECURSIVE t AS (
SELECT s2.service_id,
s2.service_name,
1 AS dependency_depth,
CONCAT('Payment_Gateway','->',s2.service_name) AS dependency_path
FROM service_dependencies sp
JOIN services s1 ON sp.callee_service_id=s1.service_id
JOIN services s2 ON sp.caller_service_id=s2.service_id
WHERE YEAR(first_call_date)=2025 AND s1.service_name='Payment_Gateway'
UNION ALL
SELECT s2.service_id AS service_id,
s2.service_name,
dependency_depth+1,
CONCAT(dependency_path,'->',s2.service_name)
FROM t
JOIN service_dependencies sp ON t.service_id=sp.callee_service_id
JOIN services s2 ON sp.caller_service_id=s2.service_id
WHERE YEAR(first_call_date)=2025
)
SELECT *
FROM t
ORDER BY dependency_depth ASC,service_id ASC ,dependency_path ASC