WITH inp AS (SELECT '0090333201ce'::VARCHAR AS hw_id) SELECT uj.id, uj.domain_id, uj.category_id, uj.exclude_category_id, uj.datetime, c.name, c1.name AS exclude_name, uj.description, uj.error, uj.major_version, uj.firmware_version, uj.apps_version, uj.json_name, uj.status, uj.upgrade, uj.bootcode , 0 AS running, 0 AS error, 0 AS queued, 0 AS finished, uj.firmware_json_value, uj.apps_json_value, d.firmware_json_url, d.apps_json_url , (SELECT ujh.status FROM update_job_history ujh WHERE ujh.update_job_id=uj.id AND ujh.device_id=de.id ORDER BY ujh.id DESC LIMIT 1) AS update_status FROM inp, update_jobs uj JOIN domains d ON uj.domain_id=d.id JOIN devices de ON de.domain_id=d.id LEFT OUTER JOIN categories c ON (c.id=uj.category_id) LEFT OUTER JOIN categories c1 ON (c1.id=uj.exclude_category_id) WHERE de.hw_id=inp.hw_id AND (uj.category_id IS NULL OR EXISTS (SELECT dc.device_id FROM device_categories dc WHERE dc.device_id=de.id AND dc.category_id=uj.category_id)) AND (uj.exclude_category_id IS NULL OR NOT EXISTS (SELECT dc.device_id FROM device_categories dc WHERE dc.device_id=de.id AND dc.category_id=uj.exclude_category_id)) ORDER BY uj.datetime DESC LIMIT 1;