2

假设我有两个表,A 和 B。A 有一个 ID 字段,B 有一个 ID、Value 和 Title 字段。这两个 ID 字段是相关的,因此 A 和 B 之间是一对多的关系。

我想要做的是在 A 中添加一个计算字段,以从相关 B 记录中检索特定值的标题。这可能吗?

4

2 回答 2

3

有几种方法可以做到这一点,具体取决于您要实现的目标:

A::index ---< B::indexOfA

关系排序顺序

如果您在 A 中创建一个新的计算字段,计算 = B::Title 将使用第一条记录(按排序顺序)。

示例:B 有一个字段 B::recordDate 并且无论输入记录的顺序如何,您总是想要最新的 recordDate。您将修改 A::index ---< B::indexOfA 关系以按 recordDate 降序排序. 您的 A::titleFromB 计算字段将是:

B::Title

获取NthRecord

http://www.filemaker.com/help/html/func_ref3.33.10.html

如果您想要从关系到 B 的特定记录号,您可以使用 GetNthRecord 函数。

示例:您总是希望显示与 B 的关系的第二条记录。您的 A::titleFromB 计算字段将是:

GetNthRecord(B::Title ; 2)

执行SQL

在 FileMaker 12 中,您可以使用 ExecuteSQL 计算。

示例:假设您知道要显示其标题的记录的 B::index。您的 A::titleFromB 计算字段将是:

ExecuteSQL("SELECT Title from B WHERE index = ?"; ¶ ; "," ; <field, variable or string with index of B> )
于 2013-04-07T23:57:15.153 回答
0

您想要构建关系的方式是让每个 A 和 B 都有自己唯一的 ID 字段。然后在 B 中,有一个 id_a 字段(或类似的字段),您可以在其中建立您的关系。

从那里我回应 pft221 所说的关于 ExecuteSQL 的内容。这对我来说是一个很棒的功能。它会是这样的:

ExecuteSQL ( "SELECT Title FROM B WHERE id_a =? and title = ?"; ""; ""; <id_a value>; <title value> )

您也可以进行内部连接,但这似乎比它的价值更麻烦。

于 2013-04-14T05:19:34.223 回答