Принцип JOIN

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Принцип JOIN

Re: Принцип JOIN

Laba » 03 апр 2009, 10:56

farrier писал(а):Стоит задача, чтоб сделать автоматический join ЛЮБОЙ схемы в базе данных.
...
farrier!

:D Судя по твоему вопросу, могу сказать, что писать программные модули для генератора отчетов тебе ещё рановато. Ты конечно можешь это пытаться сделать, но... ;)

Дам тебе ещё совет: расспроси пользователя (если это не ты сам :D ) о том, что ему конкретно надо. Пусть он самостоятельно или вместе с тобой нарисует формочку в excel

Re: Принцип JOIN

Naeel Maqsudov » 30 мар 2009, 03:35

Ну а какие проблемы? Если 3 таблицы связаны, то объединяйте Join-ом все 3.

Пример неудачный с Address Role и Customer.. Ничего не понятно.

from t1 join (t2 join t3 on (t2.pk=t3.fk)) on (t1.pk=t2.fk)

Но мене кажется что Вы пытаетесь перевыполнить Ваше задание. :) Наверное надо как в Access. Просматривается 1 таблица (главная), и к ней дается на выбор несколько связанных с ней (подчиненных (со вторичными ключами)), чтобы показать связанные дочерние записи. Выбирается единовременно только одна.

Re: Принцип JOIN

farrier » 30 мар 2009, 01:30

Требование такое, чтоб через join было :(

Re: Принцип JOIN

AiK » 30 мар 2009, 00:42

не очень понял.
Чем не устраивает что-то вроде
[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

farrier » 29 мар 2009, 21:26

Стоит задача, чтоб сделать автоматический join ЛЮБОЙ схемы в базе данных.
То есть моя программа подсоединяется к базе, читает как связаны друг с другом таблицы и показывает клиенту. Тот выбирает нужные таблицы и нажимает Сделать запрос.
И вот моя прога должна соединить эти таблицы в JOINах. Но получается, что может быть
несколько таблиц связаны между собой - то есть например address имеет foreign key для role и для customer. И получается, что address должен 2 раза появиться перед словом JOIN - а это ж недопустимо :(
Можно объяснить как-от принцип формирования этих JOIN - а то я чтото не совсем понимаю логику их формирования в случае, когда на какую-то таблицу есть ссылки например сразу в трех других?

Вернуться к началу