- SELECT i.id,i.mission, i.name, i.tick,eta
- , i.amount, coords(x,y,z) AS coords, t.id AS planet
- FROM fleets i
- LEFT OUTER JOIN (planets
- NATURAL JOIN planet_stats) t ON i.target = t.id
- AND t.tick = ( SELECT MAX(tick) FROM planet_stats)
- WHERE i.sender = $1
- AND (i.tick > $2 - 14 OR i.mission = 'Full fleet')
- ORDER BY i.tick,x,y,z
+(
+ SELECT DISTINCT ON (mission,name) fid,mission,name,tick, NULL AS eta
+ ,amount, NULL AS coords, planet, NULL AS back, NULL AS recalled
+ FROM fleets f
+ WHERE planet = $1 AND tick <= $2 AND (
+ mission = 'Full fleet'
+ OR fid IN (SELECT fid FROM fleet_scans)
+ ) AND (
+ mission = 'Full fleet'
+ OR tick >= $2 - 12
+ )
+ ORDER BY mission,name,tick DESC
+) UNION (
+ SELECT fid,mission,name,landing_tick AS tick, eta, amount
+ , coords(x,y,z), t.id AS planet, back
+ , (back <> landing_tick + eta - 1) AS recalled
+ FROM fleets f
+ JOIN launch_confirmations USING (fid)
+ LEFT OUTER JOIN current_planet_stats t ON target = t.id
+ WHERE f.planet = $1 AND back >= $2 AND landing_tick - eta - 12 < $2
+) UNION (
+ SELECT DISTINCT ON (tick,x,y,z,mission,name,amount)
+ NULL as fid, i.mission, i.name, i.tick,eta
+ , i.amount, coords(x,y,z), t.id AS planet, back, NULL AS recalled
+ FROM intel i
+ LEFT OUTER JOIN current_planet_stats t ON i.target = t.id
+ WHERE uid = -1 AND i.sender = $1 AND i.tick > $2 - 14 AND i.tick < $2 + 14
+ ORDER BY i.tick,x,y,z,mission,name,amount,back
+)