这几天公司在选型报表,我负责metaBase的研究,发现metaBase的多字段下拉选择时候总是报错,如下sql:
select * from org_outp_register register where 1 = 1 and {{depc_name}}
这个写法其实就是正常sql的in查询:select * from org_outp_register register where 1 = 1 and register.depc_name in ()
报错信息如下:
这个该死的大差号!
从百度找到谷歌,没有找到答案,然后又回去翻官方文档,英语略差,直接谷歌翻译,发现文档太迷惑了,不知道是不是翻译的问题,反正还是丈二摸不到头脑。
又开始喝水发呆,看着这个大大的差号,突然错误信息的一句话引起了我的注意:“org_outp_register.dept_name' in‘where clause’”
咦,这莫不是说,你sql的这个表的别名我已经给你加上了,就是org_outp_register!而你的前缀却是register,跟我的有冲突啊!
我火速把我的sql:select * from org_outp_register register where 1 = 1 and {{depc_name}},改成了select * from org_outp_register where 1 = 1 and {{depc_name}}
我去掉了别名,在选择多个科室信息,查询,果然好了。
原来他不支持别名啊,等一下,我这是条简单的sql,后面肯定要写关联sql,没有别名怎么搞!
咦,我如果把表的别名换成它的呢 也就是给我的错误信息的 “org_outp_register.dept_name' in‘where clause’” 的org_outp_register,也就是:select * from org_outp_register org_outp_register where 1 = 1 and {{depc_name}}
在选择多个科室信息,查询,出数据。
以上就是我对这个错误的解决方式,不过到了这一步,我又发现了一个疑惑,还是我研究的不够透彻,我的版本是v0.38.1。
字段筛选条件(Field Filters)关联到具体的表后,拿到数据,无法根据条件筛选,这个有点呆,而且还无法自定义下拉框的数据(是我没发现还是就是不能,有发现的同学可以给我说下哈)