form.aggregateselect
功能说明
描述
查询聚合表数据。
支持部分mysql函数,请查看文档【支持的SQL函数】
函数原型
form.aggregateselect(formAlias,fields,wheres="")
参数
名称 | 类型 | 描述 |
---|---|---|
formAlias | 字符型 | 表单别名,可以在表单设计界面中的“表单属性”中获取(支持跨应用取数据,格式为:"appid@表别名") |
fields | 数组型 | 查询字段,为表单的字段的别名,可以在表单设计的字段属性中获取,支持表单字段和子表单字段同时查询(子表单字段只能属于同一个子表单),["*"] 表示查询所有字段 |
wheres | 字符型 | 查询条件,默认为空字符 |
- wheres 数据格式:
- WHERE ($单行文本 like "%111%") AND ($多行文本 between "111" AND "222") GROUP BY $单行文本,$多行文本 ORDER BY $单行文本 DESC,$多行文本 ASC LIMIT 0,20
- 条件存在 or 语句时需要将查询条件括起来,因为外层存在系统查询条件and,or条件和其混用会导致结果不准确,order/group/limit等语句不需要,如下所示:
wheres = "($单行文本 = '11' or $单行文本 = '22') order by $单行文本 asc"
返回值
类型 | 描述 |
---|---|
数组:列表型 | 以列名关联的方式返回查询结果 |
备注
可能出现的错误信息,执行 getlasterror 函数获取具体详细信息:
- 错误编码=getlasterror()
- 错误信息=getlasterror(1)
错误编码 | 错误信息 |
---|---|
1407 | api执行频率超出限制 |
1400 | 参数类型不正确 |
1300 | 参数不是数组类型 |
1305 | 参数不是关联数组 |
1313 | 参数非法 |
1506 | 连接数据库失败 |
1502 | 取表单字段失败 |
1594 | 不允许操作回收站的表单 |
1560 | 表单中没有可操作的数据,请检查参数是否正确 |
1302 | 赋值失败 |
1508 | 非法字段别名 |
1504 | 不存在的字段 |
1582 | 非法的表达式 |
1505 | 不支持的函数 |
1587 | 查询超出范围 |
1504 | 不存在的字段 |
支持的sql函数(只支持大写) | COUNT、MAX、MIN、AVG、SUM、NOW |
支持的sql比较关键字(只支持大写) | AND、OR、ORDER、GROUP(group by)、LIMIT |
其他:
- 所有表单查询api的结果集行数最多返回500条数据。
- 所有表单api调用频率限制为1000次/分钟。
示例
def test():
# 普通字段查询
# 查询全部数据使用 ["*"]
fields=["$单行文本"]
res=form.aggregateselect("测试表单",fields)
# 普通字段和子表单字段同时查询
where="$单行文本='11' and $单行文本_子表单='22'"
res=form.aggregateselect("测试表单",["$单行文本","$单行文本_子表单"],where)
print(res)
# select `单行文本` from `测试表单` LIMIT 0,500
fields=["$单行文本"]
where="limit 0,500"
res=form.aggregateselect("测试表单",fields,where)
print(res)
# select MAX(`单行文本`) from `测试表单`
# #开头表示sql函数, 支持的函数名称详情见备注
fields=["#MAX($单行文本)"]
res=form.aggregateselect("测试表单",fields)
print(res)
# select `单行文本` from `测试表单` where 单行文本 IN (1,2,3) AND 单行文本1 NOT IN (4,5,6) ORDER BY 单行文本 DESC
fields=["$单行文本"]
where="$单行文本 IN (1,2,3) AND $单行文本1 NOT IN (4,5,6) ORDER BY $单行文本 DESC"
res=form.aggregateselect("测试表单",fields,where)
print(res)
# 非复合字段查空值(单行文本,多行文本,数字,日期时间,单选按钮组,下拉框,流水号,成员单选,部门单选)
fields=["$单行文本"]
where="($单行文本 is None or $单行文本='')"
res=form.aggregateselect("测试表单",fields,where)
print(res)
# 日期查询(由于日期在数据库底层为时间戳格式(毫秒), 所以这里要进行转换)
fields=["$日期时间"]
where="$日期时间 BETWEEN #unix_timestamp('2020-09-29 00:00:00')*1000 and #unix_timestamp('2020-09-29 23:59:59')*1000"
res=form.aggregateselect("测试表单",fields,where)
print(res)
演示示例
- 暂无
安装包下载
- 暂无
相关视频
- 暂无