以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]多表查询  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=38692)

--  作者:manyifuwu
--  发布时间:2013/8/4 16:57:00
--  [求助]多表查询
谢谢“!如何实现多表查询同一天回访日期,的行。?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:查询回访日期.table


--  作者:y2287958
--  发布时间:2013/8/4 17:05:00
--  

五、UNION 运算符

UNION运算符用于组合两个查询的结果。
例如有一个客户表,一个供应商表,我需要得到所有在中国的客户和供应商的名称和地址。
因为数据位于不同的表中,显然,我们需要用两个查询才能完成任务:

SELECT 公司名称, 地址 FROM {客户} WHERE 国家 = \'中国\' UNION SELECT 公司名称, 地址 FROM {供应商} WHERE 国家 = \'中国\'

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

默认情况下,UNION会自动排除重复的行,然后你可以用ALL关键词来确保返回所有的行,例如:

SELECT 公司名称, 地址 FROM {客户} WHERE 国家 = \'中国\' UNION ALL SELECT 公司名称, 地址 FROM {供应商} WHERE 国家 = \'中国\'


--  作者:有点甜
--  发布时间:2013/8/4 20:37:00
--  
 例子,主要是拼凑sql查询语句。

\'要查询的表
Dim tbs() As String = {"表A", "表B", "表C"}

Dim d As Date = e.Form.Controls("DateTimePicker1").Value
Dim t As Table = e.Form.Controls("Table1").Table
Dim sqlstr As String = ""
For i As Integer = 0 To tbs.Length - 1
    sqlstr += "select 回访日期, 第二列 from {" & tbs(i) & "} where 回访日期 = #" & d & "#"
    If i < tbs.length - 1 Then
        sqlstr += " union all "
    End If
Next
t.Fill(sqlstr, True)

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:查询回访日期.table



--  作者:manyifuwu
--  发布时间:2013/8/6 10:12:00
--  
非常感谢。?如果有不同列,怎么显示出来呢?

[此贴子已经被作者于2013-8-6 10:14:53编辑过]

--  作者:Bin
--  发布时间:2013/8/6 10:15:00
--  
同列就重新命名 一下    例如 select a.第一列 as 表A第一列,b.第一列 as 表B第一列     这样
--  作者:manyifuwu
--  发布时间:2013/8/6 10:43:00
--  
sql数据源,
出错:select语句执行错误,请检查语法积极数据设置???、

--  作者:Bin
--  发布时间:2013/8/6 10:52:00
--  
你是怎么写的?
--  作者:manyifuwu
--  发布时间:2013/8/6 10:58:00
--  
\'要查询的表
Dim tbs() As String = {"表A", "表B", "表C"}


Dim d As Date = e.Form.Controls("DateTimePicker1").Value
Dim t As Table = e.Form.Controls("Table1").Table
Dim sqlstr As String = ""
For i As Integer = 0 To tbs.Length - 1
    sqlstr += "select 回访日期, 人员 , 情况 from {" & tbs(i) & "} where 回访日期 = #" & d & "#"
    If i < tbs.length - 1 Then
        sqlstr += " union all "
    End If
Next
t.Fill(sqlstr, True)

--  作者:Bin
--  发布时间:2013/8/6 11:00:00
--  
应该弹出一下你拼接的SQL 看看是否有问题.代码看起来好像没问题.
--  作者:manyifuwu
--  发布时间:2013/8/6 12:18:00
--  
内部表,没问题。外表sql源还是不行的呀????????