Не понимаю почему, но данный запрос выдал не все банки из списка. Вариант dfire выдал все.
Я проверил это сделав 2 запроса - все банки и все кредиты и затем парой форичей отсортировав лишние.
как-то странно, мой запрос должен вернуть только те значения, которые есть в правой таблице (credits), соотвественно если они есть в правой таблице, то значит в этих банках есть кредиты, а попробуйте выполнить такой запрос: select b.* from banks as b INNER JOIN credits as c on c.bank_id = b.id group by c.bank_id;
Я не большой специалист в SQL, можно сказать что этого языка я и не знаю ), но умные люди утверждают что чем яснее для БД выразишь то что от нее надо - тем лучше она этот запрос оптимизирует. Если вы просите сделать join да и еще сгруппировать потом, то мне кажется это должно работать дольше чем мой вариант.
А может и "SELECT * FROM banks WHERE id IN (SELECT bank_id FROM "Кредиты"); будет еще быстрее =) надо проверять (без DISTINCT)
ну тут 2 запроса к БД у меня 1, + если данных будет очень много например 50 тысяч то ваш запрос вернёт SELECT bank_id FROM "Кредиты все 50 тысяч значений.