Не, чинить кривые запросы это прикольно. Мне кажется я вообще об этом не то думаю. Если начинать думать от конструктора, то все выглядит чуть более понятно. Вот у тебя есть 2 таблицы и твой запрос, который НА САМОМ деле хочет аналитик. То есть на самом деле он хочет общую таблицу, в ней 5 записей, к которой применяется фильтрация и которая содержит объединенные данные по ID.
Вот это "человекопонятное" я могу придумать как собрать, оно укладывается в схемы популярных конструкторов. Твоя фишка - это оптимальность, потому что твой движок может не очень оптимальный конструкт заоптимизировать, чтобы он хорошо работал.