Как делать в запросе подзапрос?
Вы не можете получить такую структуру данных из mysql.
Если функция getTests не вызывается в цикле - 2 запроса абсолютно нормально.
Хотя код у вас какой то странный написан, значение $sql перезаписывается на 5й строчке и Вы в итоге шлете один и тот же запрос дважды.
А в чем вопрос собственно? INNER/LEFT JOIN?