Сразу предупреждаю, я не гуру по базам и вообще такие вопросы лучше задавать на профильных ресурсах, например, на
sql.ru.
Есть вложенные запросы, погуглите. Но, по-моему, особого прироста это не даст, они нужны просто для того, что бы перенести логику из приложения в запрос. То есть, по производительности, равносильно тому, что вы загрузите данные из первой таблицы, а затем циклом из второй.
В общем, если бы производительность была очень важна, я бы делал так:
1) если предполагаемый массив данных небольшой, то выбирал бы одним запросом
2) если большой, то двумя, второй по списку id, так как может кушать много памяти
Обработал бы полученные данные и привел бы к требуемому виду уже непосредственно в приложении.