Стоит задача, чтоб сделать автоматический join ЛЮБОЙ схемы в базе данных.
То есть моя программа подсоединяется к базе, читает как связаны друг с другом таблицы и показывает клиенту. Тот выбирает нужные таблицы и нажимает Сделать запрос.
И вот моя прога должна соединить эти таблицы в JOINах. Но получается, что может быть
несколько таблиц связаны между собой - то есть например address имеет foreign key для role и для customer. И получается, что address должен 2 раза появиться перед словом JOIN - а это ж недопустимо
Можно объяснить как-от принцип формирования этих JOIN - а то я чтото не совсем понимаю логику их формирования в случае, когда на какую-то таблицу есть ссылки например сразу в трех других?
Принцип JOIN
не очень понял.
Чем не устраивает что-то вроде
[syntax=sql]
select
*
from
table1 t1,
table2 t2,
table3 t3,
table3 t4
where
t1.some_id = t2.some_id
and t1.some_id = t3.some_id
and t1.some_id = t4.some_id
[/syntax]
к слову, джойны могут выполнятся и по парам, отличным от PK<->FK.
Чем не устраивает что-то вроде
[syntax=sql]
select
*
from
table1 t1,
table2 t2,
table3 t3,
table3 t4
where
t1.some_id = t2.some_id
and t1.some_id = t3.some_id
and t1.some_id = t4.some_id
[/syntax]
к слову, джойны могут выполнятся и по парам, отличным от PK<->FK.
Даже самый дурацкий замысел можно воплотить мастерски
Требование такое, чтоб через join было
- Naeel Maqsudov
- Сообщения: 2551
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Ну а какие проблемы? Если 3 таблицы связаны, то объединяйте Join-ом все 3.
Пример неудачный с Address Role и Customer.. Ничего не понятно.
from t1 join (t2 join t3 on (t2.pk=t3.fk)) on (t1.pk=t2.fk)
Но мене кажется что Вы пытаетесь перевыполнить Ваше задание. Наверное надо как в Access. Просматривается 1 таблица (главная), и к ней дается на выбор несколько связанных с ней (подчиненных (со вторичными ключами)), чтобы показать связанные дочерние записи. Выбирается единовременно только одна.
Пример неудачный с Address Role и Customer.. Ничего не понятно.
from t1 join (t2 join t3 on (t2.pk=t3.fk)) on (t1.pk=t2.fk)
Но мене кажется что Вы пытаетесь перевыполнить Ваше задание. Наверное надо как в Access. Просматривается 1 таблица (главная), и к ней дается на выбор несколько связанных с ней (подчиненных (со вторичными ключами)), чтобы показать связанные дочерние записи. Выбирается единовременно только одна.
farrier!farrier писал(а):Стоит задача, чтоб сделать автоматический join ЛЮБОЙ схемы в базе данных.
...
Судя по твоему вопросу, могу сказать, что писать программные модули для генератора отчетов тебе ещё рановато. Ты конечно можешь это пытаться сделать, но...
Дам тебе ещё совет: расспроси пользователя (если это не ты сам ) о том, что ему конкретно надо. Пусть он самостоятельно или вместе с тобой нарисует формочку в excel