2015-09-23 8 views
0

У меня есть таблица транзакций. Для любой данной записи я хочу иметь возможность включать портал, который показывает все связанные транзакции. Поскольку связанные записи находятся в той же таблице, что и родительская запись, я создал второе столбец (TO). Я связал эти два TO с таблицей join, в которую я ввожу внешние ключи двух TO, чтобы указать, какие записи относятся к каким другим записям.Возможна ли двунаправленная взаимосвязь между собой в Filemaker?

В макете для данной транзакции я добавил портал, который отображает связанные записи из второй таблицы. Все идет нормально.

Так, скажем, в таблице присоединиться, я сказал сделка 100 связана с операциями 105 и 110. В портале для сделки 100, я могу видеть записи 105 & 110.

Однако, я бы также хотел бы см. транзакцию 100 в портале для транзакции 105, но не можете понять, как это сделать, без необходимости вручную вводить одно и то же отношение, но наоборот.

NB. Я использую Filemaker Pro 12.

+0

См., Если это может помочь: http://fmforums.com/topic/38282-join-table-inverse-relationships/?do=findComment&comment=178007 –

ответ

0

Для этого вам нужно создать две записи для каждой связи в промежуточной таблице.

Например, у вас есть TO_1 и TO_2 и промежуточная таблица. Промежуточная таблица имеет два поля: id_1 и id_2. Когда вы создаете связь между TO_1 и TO_2, создайте две записи в промежуточной таблице. Одна запись хранит id от TO_1 в id_1 и TO_2 в id_2. Вторая запись хранит id от TO_1 в id_2 и TO_2 в id_1.

+0

"* Вам необходимо создать две записи для каждой взаимосвязи в промежуточном чтобы сделать это. * «Нет, нет. –

+0

Использование двух записей - не единственный способ, однако, это очень хороший способ сделать это. Он предлагает большую гибкость в дизайне и использовании. Он использует простые конструкции, которые являются надежными и масштабируемыми. Методы, с которыми вы ссылаетесь, используют вычисления для создания ссылок на одной стороне отношения. Это означает, что вы можете использовать эти отношения только в одном направлении. Это ограничение. Это также означает, что вы увидите влияние производительности, поскольку количество записей растет. – eukaryote

+0

Нет, нет и нет. Нет, это не очень хороший способ сделать это. Нет, это не значит, что вы можете использовать эти отношения только в одном направлении (вот и все дело здесь), и нет, нет влияния на производительность. Фактически, у вас будет в два раза больше записей - и это не имеет значения. –

0

Похоже, что вы хотите, чтобы все внешние ключи присутствовали в одном поле, в котором вы используете мульти-ключ. В вашем примере, мульти-ключ будет выглядеть следующим образом:

100 
105 
110 

Если вы не хотите, чтобы отобразить настоящий рекорд в портале связанных записей, вы можете пропустить это будет определение отношения, чтобы исключить себя путем добавления предикат что-то вроде этого:

Fk = Ф.К. И рк ≠ рк

Будет ли это работать?

+0

Как это будет работать в обратном направлении? Вот о чем этот вопрос. –

+0

Поскольку ключи для всех дочерних записей представлены в мульти-ключе. Если вы находитесь на записи 100, портал показывает 105 и 110. Если вы находитесь на записи 105, портал показывает 100 и 110 и так далее. – SoliantMike

+0

Извините, это не имеет для меня никакого смысла. Скажем, fk = fk AND pk ≠ fk. Что находится в поле fk таблицы транзакций? Почему в таблице «Транзакции» также есть поле fk? –