以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]SQLtable的嵌套用法 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=24282) |
-- 作者:chnfo -- 发布时间:2012/10/9 17:04:00 -- [求助]SQLtable的嵌套用法 在窗口中建立一个SQLTable的表table1。 有一个全局代码变量KID为数值型。 这个表里的数据来源于表A,而且要满足条件表A的_Identify列在B表的“表AID“列中有。 Tables(e.Form.Name & "_Table1").Fill("Select * from {表A} where [_Identify] In (Select 表AID from {表B} where [KK] = & KID)", "外部数据源名", True) 问题: (1)这样的用法提示SQL语句执行错误,请检查语法及数据源设置,是不是Select 表AID from {表B} where [KK] = & KID也要注明外部数据源名? (2)如果用这样的做法来实现,效率上会不会很低?其实,我用了一个变通的办法来解决它,但觉得一开始加载table的时候,如果数据量很大,后面再过滤一次,可能还不如第一次加载时就过滤到位。
[此贴子已经被作者于2012-10-9 17:08:01编辑过]
|
-- 作者:blackzhu -- 发布时间:2012/10/9 17:07:00 -- 你用查询器套个SQL语句出来不就行了? |
-- 作者:lin_hailun -- 发布时间:2012/10/9 17:13:00 -- SQL语句可以随便嵌套。 语句错了这个地方 where [KK] = & KID 子查询如果可以,最好改成连接查询。 |
-- 作者:chnfo -- 发布时间:2012/10/9 17:14:00 -- 你是说用SQLJoinTableBuilder? |
-- 作者:lin_hailun -- 发布时间:2012/10/9 17:50:00 -- 以下是引用chnfo在2012-10-9 17:14:00的发言:
你是说用SQLJoinTableBuilder? 差不多,不过指的是写sql语句。 比如你上面那句可以变成 Select {表A}.* from {表A} join {表B} on ({表A}._Ientify = {表B}.表AID) where ...... [此贴子已经被作者于2012-10-9 17:49:45编辑过]
|
-- 作者:chnfo -- 发布时间:2012/10/9 23:28:00 -- 试了几遍,还是不太明白错在哪里。 |
-- 作者:chnfo -- 发布时间:2012/10/9 23:54:00 -- 明白了。 Tables(e.Form.Name & "_Table1").Fill("Select * from {表A} where [_Identify] In (Select 表AID from {表B} where [KK] = & KID)", "外部数据源名", True)
应当改为 Tables(e.Form.Name & "_Table1").Fill("Select * from {表A} where [_Identify] In (Select 表AID from {表B} where [KK] = " & KID & ")", "外部数据源名", True)
[此贴子已经被作者于2012-10-10 6:49:07编辑过]
|