Foxtable(狐表)用户栏目专家坐堂 → [求助]SQLtable的嵌套用法


  共有10409人关注过本帖树形打印复制链接

主题:[求助]SQLtable的嵌套用法

帅哥哟,离线,有人找我吗?
chnfo
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2239 积分:18446 威望:0 精华:0 注册:2011/11/26 20:21:00
[求助]SQLtable的嵌套用法  发帖心情 Post By:2012/10/9 17:04:00 [只看该作者]

在窗口中建立一个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
  2楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57634 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2012/10/9 17:07:00 [只看该作者]

你用查询器套个SQL语句出来不就行了?

 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/10/9 17:13:00 [只看该作者]

 SQL语句可以随便嵌套。

 语句错了这个地方 where [KK] = & KID

 子查询如果可以,最好改成连接查询。

 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2239 积分:18446 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2012/10/9 17:14:00 [只看该作者]

你是说用SQLJoinTableBuilder?

 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By: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
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2239 积分:18446 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2012/10/9 23:28:00 [只看该作者]

试了几遍,还是不太明白错在哪里。

 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2239 积分:18446 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By: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编辑过]

 回到顶部