【问题标题】:How can I achieve in Filemaker results similar to GROUP_CONCAT?如何在 Filemaker 中实现类似于 GROUP_CONCAT 的结果?
【发布时间】:2017-01-25 17:44:50
【问题描述】:

我正在一个名为 Filemaker 的程序中做一些工作,该程序具有淡化的 sql 函数。它没有GROUP_CONCAT 函数,并且GROUP BY 子句需要SELECT 中提到的所有字段。

是否还有其他方法可以得到相同的结果:

SELECT id_candidate, GROUP_CONCAT(id_award SEPARATOR ', ')
FROM nomination 
GROUP BY id_candidate

结果

5   113, 116
6   109, 113, 114, 117, 120
7   104, 113
8   113
9   101, 104, 113, 118
10  100, 114, 118

注意:如果需要完成多个选择,我可以存储一个 SELECT 的结果并在另一个中使用它。所以我可以使用SELECT DISTINCT (id_candidate) 的结果,然后在…WHERE IN ({var}) 中调用它

【问题讨论】:

  • 您的问题是关于 SQL 还是关于 FileMaker?如果是后者,请说明您拥有哪些表格和字段,以及结果的预期用途(例如,您是否需要将其作为导出的文本文件)。通常,FileMaker 有自己的非 SQL 方法来组织数据。您应该将 SQL 的使用保留在本地方法不令人满意的极少数情况下。

标签: sql filemaker group-concat


【解决方案1】:

您已经回答了自己的问题 - 您无法在 FileMaker SQL 中的单个语句中完成 - 它对子查询的支持非常有限。

我可以使用 SELECT DISTINCT (id_candidate) 的结果,然后 在...WHERE IN ({var})

中调用它

我建议反其道而行之。将计算的查询存储在 FileMaker 中的记录级别,例如一个名为“awards”的计算字段:

ExecuteSQL ( "SELECT id_award 
              FROM nomination 
              WHERE id_candidate = ?" ; 
"" ; ", " ; nomination::id_candidate )

然后你就可以运行你的报告了:

   ExecuteSQL ( "SELECT id_candidate, awards
                 FROM nomination 
                 GROUP BY id_candidate" ; 
    "" ; "" )

这应该可以让您获得所需的输出

【讨论】:

  • 虽然我试图避免在候选表中创建一个字段,但我相信这可能是目前唯一的解决方案。
  • 我认为,这是最简单的方法。如果您无权访问字段定义,我建议您遍历记录并使用脚本构建报告。
猜你喜欢
  • 2018-10-30
  • 2019-08-05
  • 2021-03-05
  • 2021-11-21
  • 1970-01-01
  • 2019-02-07
  • 1970-01-01
  • 1970-01-01
  • 2015-05-20
相关资源
最近更新 更多