Это на самом деле четыре таблицы, а не три. Это не просто придирка - похоже, суть вашего вопроса такова: «Как я могу использовать имя таблицы как часть критерия соединения?» (т.е. как можно обрабатывать таблицы information_extra_ как одну таблицу?)
На что ответ: ты не можешь. (Вне динамического SQL.)
В этом конкретном случае следующее должно вернуть то, что, я думаю, вы ищете:
select j.join_name joined_entity,
case when j.join_name = 'persons' then p.name
else c.name
end joined_entity_name
from information i
inner join joins j on i.join_id = j.id
left join information_extra_persons p on i.id = p.information_id
left join information_extra_companies c on i.id = c.information_id
Альтернативно, менее эффективный (но более общий) подход может быть:
select j.join_name joined_entity,
v.name joined_entity_name
from information i
inner join joins j on i.join_id = j.id
inner join (select 'persons' entity, information_id, name from information_extra_persons
union all
select 'companies' entity, information_id, name from information_extra_companies) v
on i.id = v.information_id and j.join_name = v.entity