39 lines
1.1 KiB
SQL
39 lines
1.1 KiB
SQL
WITH CanonicalLayouts AS (
|
|
SELECT regionId, MIN(layoutId) AS layoutId
|
|
FROM MapLayouts
|
|
GROUP BY regionId
|
|
),
|
|
RegionLayouts AS (
|
|
SELECT
|
|
re.regionId,
|
|
re.regionName,
|
|
cl.layoutId
|
|
FROM Regions re
|
|
JOIN CanonicalLayouts cl ON re.regionId = cl.regionId
|
|
),
|
|
SystemConnections AS (
|
|
SELECT
|
|
ss_from.solarSystemId AS fromSystemId,
|
|
ss_to.solarSystemName AS toSystemName
|
|
FROM StarGates sg
|
|
JOIN SolarSystems ss_from ON sg.fromSystemId = ss_from.solarSystemId
|
|
JOIN SolarSystems ss_to ON sg.toSystemId = ss_to.solarSystemId
|
|
),
|
|
ConnectedSystems AS (
|
|
SELECT
|
|
fromSystemId,
|
|
GROUP_CONCAT(DISTINCT toSystemName) AS connectedSystems
|
|
FROM SystemConnections
|
|
GROUP BY fromSystemId
|
|
)
|
|
SELECT
|
|
ss.solarSystemName AS solarSystemName,
|
|
ml.x,
|
|
ml.y,
|
|
rl.regionName AS regionName,
|
|
ss.security AS security,
|
|
COALESCE(cs.connectedSystems, '') AS connectedSystems
|
|
FROM RegionLayouts rl
|
|
JOIN MapLayout ml ON ml.layoutId = rl.layoutId
|
|
JOIN SolarSystems ss ON ss.solarSystemId = ml.solarSystemId
|
|
LEFT JOIN ConnectedSystems cs ON ss.solarSystemId = cs.fromSystemId |