123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- WITH RECURSIVE excluded_ips(ip) AS(
- SELECT 'ip20'
- UNION ALL
- SELECT 'ip21'
- ),
- ConnectedIPs AS (
-
-
- SELECT
- 1 AS level,
- 'ip0' AS from_ip,
- NULL AS to_ip,
- 0 AS addition_info
- UNION ALL
- SELECT
- 1 AS level,
- 'ip1' AS from_ip,
- NULL AS to_ip,
- 0 AS addition_info
-
- UNION ALL
- SELECT
- ConnectedIPs.level + 1 AS level,
- ConnectedIPs.from_ip AS from_ip,
- table_01.to_ip AS to_ip,
- CASE
-
- WHEN (SELECT COUNT(*) FROM table_01 WHERE table_01.from_ip = ConnectedIPs.from_ip OR table_01.to_ip = ConnectedIPs.from_ip) >= 5 THEN 1
- ELSE 0
- END AS addition_info
- FROM ConnectedIPs
- JOIN table_01 ON (table_01.from_ip = ConnectedIPs.from_ip OR table_01.to_ip = ConnectedIPs.from_ip)
-
- WHERE ConnectedIPs.level < 5
- AND NOT EXISTS (SELECT 1 FROM excluded_ips WHERE excluded_ips.ip = table_01.from_ip OR excluded_ips.ip = table_01.to_ip)
- )
- SELECT
- ConnectedIPs.level,
- ConnectedIPs.from_ip,
- ConnectedIPs.to_ip,
- NULL AS unique_hash,
- CURRENT_TIMESTAMP AS time,
- NULL AS data,
- NULL AS from_pos,
- NULL AS to_pos,
- ConnectedIPs.addition_info
- FROM ConnectedIPs
- WHERE ConnectedIPs.level <= 5;
|