Foxtable(狐表)用户栏目专家坐堂 → [求助]生成的SQL查询表


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

主题:[求助]生成的SQL查询表

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


加好友 发短信
等级:九尾狐 帖子:2927 积分:20161 威望:0 精华:0 注册:2012/2/3 17:45:00
[求助]生成的SQL查询表  发帖心情 Post By:2017/10/22 9:15:00 [显示全部帖子]

老师,
   系统中有有很多表,想要随意两个表都能生成的SQL查询表,并且包含两个表的所有数据,如何实现。

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


加好友 发短信
等级:九尾狐 帖子:2927 积分:20161 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2017/10/22 18:50:00 [显示全部帖子]

老师,
帮助文档的内容清楚
用上面帮助文档的例子我的意思


拿帮助文档的例子,查询出来的是 产品ID = 订单明细ID 这个条件的所有数据

我的意思是 包含两个表的所有数据,那些 产品ID <> 订单明细ID  也要 如何实现 

或者 说 条件 产品ID = 订单明细ID 已经不是必须的 总之是 要两个表的全部数据在一张表上
[此贴子已经被作者于2017/10/22 18:51:35编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2927 积分:20161 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2017/10/22 19:52:00 [显示全部帖子]

6列(不包括系统列) 15行就对了

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


加好友 发短信
等级:九尾狐 帖子:2927 积分:20161 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2017/10/22 22:07:00 [显示全部帖子]

UNION运算符用于组合两个查询的结果。

两个查询的字段名称、个数、类型必须完全一致才行。

上述 代码好像解决了这个问题


这里还需要指定 列名对应来源哪个 表吗

[此贴子已经被作者于2017/10/22 22:16:59编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2927 积分:20161 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2017/10/22 22:23:00 [显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下:qq图片20171022222351.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:九尾狐 帖子:2927 积分:20161 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2017/10/22 22:24:00 [显示全部帖子]

老师,
上图 为何筛选条件不成功 为什么呢?

列名 expr100 是不是没有加表名造成的?

[此贴子已经被作者于2017/10/22 22:25:00编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2927 积分:20161 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2017/10/22 22:34:00 [显示全部帖子]

Dim dt1 As DataTable = DataTables("表A")
Dim dt2 As DataTable = DataTables("表B")
Dim sql As String = ""
Dim s1,s2 As String
For Each dc As DataCol In dt1.datacols
    If dc.Expression = "" Then
        s1 &= "{" & dt1.name & "}.[" & dc.name & "],"
        s2 &= "'' as {" & dt1.name & "}.[" & dc.name & "],"
    End If
Next
For Each dc As DataCol In dt2.datacols
    If dc.Expression = "" Then
        s1 &= "'' as {" & dt2.name & "}.["  & dc.name & "],"
        s2 &= "{" & dt2.name & "}.[" & dc.name & "],"
    End If
Next
sql &= "select " & s1.trim(",") & " fr om {" & dt1.name & "}"
sql &= " unio n all Select " & s2.trim(",") & " fr om {" & dt2.name & "}"
output.show(sql)

select {表A}.[第一列],{表A}.[第二列],{表A}.[第三列],{表A}.[第四列],{表A}.[第五列],{表A}.[第六列],{表A}.[第七列],{表A}.[第八列],{表A}.[第九列],'' as {表B}.[第一列],'' as {表B}.[第二列],'' as {表B}.[第三列],'' as {表B}.[第四列],'' as {表B}.[第五列],'' as {表B}.[第六列],'' as {表B}.[第七列],'' as {表B}.[第八列],'' as {表B}.[第九列],'' as {表B}.[第十列] fr om {表A} unio n all Select '' as {表A}.[第一列],'' as {表A}.[第二列],'' as {表A}.[第三列],'' as {表A}.[第四列],'' as {表A}.[第五列],'' as {表A}.[第六列],'' as {表A}.[第七列],'' as {表A}.[第八列],'' as {表A}.[第九列],{表B}.[第一列],{表B}.[第二列],{表B}.[第三列],{表B}.[第四列],{表B}.[第五列],{表B}.[第六列],{表B}.[第七列],{表B}.[第八列],{表B}.[第九列],{表B}.[第十列] fr om {表B}

.NET Framework 版本:2.0.50727.3655
Foxtable 版本:2017.10.16.1
错误所在事件:
详细错误信息:
SELECT 子句中包含一个保留字、拼写错误或丢失的参数,或标点符号不正确。

还是没搞清楚 用法图片点击可在新窗口打开查看 老师和再给指点下

故意在表A 删除第十列 列类型也有不一致的情况
[此贴子已经被作者于2017/10/22 22:37:40编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2927 积分:20161 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2017/10/22 23:04:00 [显示全部帖子]

老师,
  准备合成10个以上的表,好像难度就有点大了,字段名一多,感觉会晕 ,怎么写简便呢

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


加好友 发短信
等级:九尾狐 帖子:2927 积分:20161 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2017/10/22 23:56:00 [显示全部帖子]

老师,
  好像这样可以执行,明天我再改下,麻烦您了,good night!
Dim dt1 As DataTable = DataTables("表A")
Dim dt2 As DataTable = DataTables("表B")
Dim sql As String = ""
Dim s1,s2 As String
For Each dc As DataCol In dt1.datacols
    If dc.Expression = "" Then
        s1 &= dc.name & " as " & dt1.name & "_" & dc.name & ","
        s2 &= "'' as " & dt1.name & "_"  & dc.name & ","
    End If
Next
For Each dc As DataCol In dt2.datacols
    If dc.Expression = "" Then
        s1 &= "'' as " & dt2.name & "_"  & dc.name & ","
        s2 &= dc.name & " as " & dt2.name & "_" & dc.name & ","
    End If
Next
sql &= "select " & s1.trim(",") & " fr om {" & dt1.name & "}"
sql &= " un ion all Select " & s2.trim(",") & " fr om {" & dt2.name & "}"
output.show(sql)

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


加好友 发短信
等级:九尾狐 帖子:2927 积分:20161 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2017/10/23 9:58:00 [显示全部帖子]

老师 ,

  可以生成了,但是 好像查询的表受到列数的限制,问下,大于多少列之后 就不行了呢?

 

.NET Framework 版本:2.0.50727.5420
Foxtable 版本:2017.10.16.1
错误所在事件:
详细错误信息:
查询输入必须包含至少一个表或查询。

[此贴子已经被作者于2017/10/23 10:03:29编辑过]

 回到顶部
总数 16 1 2 下一页