Этот код крайне "плохой", чтобы быть вежливым. Я не думаю, что вы понимаете, как работает SQL, что является существенным препятствием в такой ситуации - извините, но нет необходимости приукрашивать: - (
Вам необходимо применять некоторые из ваших условий к запросу в целом, а не к подзапросам, которые только неправильно заполняют столбцы всеобъемлющего запроса. Я также вижу признаки того, что вы пытаетесь втиснуть данные трех измерений в таблицу двух измерений ..
Если не считать переписывания кода для вас, верните его к основам и создайте самый простой запрос, который возвращает самый простой для вас результат. Например, запрос, который возвращает все состояния, один, который возвращает все активные состояния и т. Д. Ваше LEFT JOIN выглядит нормально, но вам нужно дополнительное WHERE в этом основном запросе, чтобы выбрать активные / неактивные строки, а не делать это в подзапросах. Вам также нужно искать другие способы доступа к «стойкам» и т. Д., Поскольку вы не можете просто втиснуть их в один столбец. Лично я бы, наверное, сначала присоединился к WHERE, будучи ленивым.
Рассматривайте этот нерабочий, но псевдо-SQL как своего рода подсказку, чтобы начать работу по крайней мере:
select e.*, g.name FROM estates e, governing_bodies g WHERE g.id = e.governing_body_id AND e.active = true;
Это даст вам только активные поместья и связанное с ними имя управляющего.