То есть моя программа подсоединяется к базе, читает как связаны друг с другом таблицы и показывает клиенту. Тот выбирает нужные таблицы и нажимает Сделать запрос.
И вот моя прога должна соединить эти таблицы в JOINах. Но получается, что может быть
несколько таблиц связаны между собой - то есть например address имеет foreign key для role и для customer. И получается, что address должен 2 раза появиться перед словом JOIN - а это ж недопустимо

Можно объяснить как-от принцип формирования этих JOIN - а то я чтото не совсем понимаю логику их формирования в случае, когда на какую-то таблицу есть ссылки например сразу в трех других?