Rss & SiteMap
Foxtable(狐表) http://www.foxtable.com
如果表A、表B结构相同,可以:
Select * From {表A} UNION Select * From {表B}
注意只能作为查询表。
现在我有许多表,这些表按月生产,表名
生产记录201009,
生产记录201010,
生产记录201011,
生产记录201012,
生产记录201101,
生产记录201102,
..............
结构完全相同
现在联合查询UNION,从某段时间到某段时间符合条件的记录
怎么写Select句?
Select {record%}.生产记录ID From user_all_tables INNER JOIN {产品安排表} ON {record%}.产品ID = {产品安排表}.产品ID where table_name like 'record%' and BETWEEN '# var("开始时间") #' AND '# var("结束时间") #'
是这是思路吗?
就是试过了不行才上来问得,在百度上也找了,在foxtable上也找了,无果。
你可以尝试在foxtable中合成SQL语句,然后再执行:
例如:
Dim nms() As String = {"表A", "表B", "表C"}
Dim SQL As String
For Each nm As String In nms
If SQL > "" Then
SQL = SQL & " UNION "
End If
SQL = SQL & "Select * From {" & nm & "}"
Next
我来给你一段完整的,没有经过测试,请自行调试,但原理应该是通的:
假定你的数据源的链接名称为"nwnd",从2009年5月到2010年10月的表:
Dim lst As List(Of String)
Dim ym1 As Integer = "生产记录200905"
Dim ym2 As Integer = "生产记录201010"
lst = Connections("nwnd").GetTableNames
For Each nm As String In lst
If nm>=ym1 AndAlso nm<=ym2 Then
lst.Add(nm)
End IF
Next
Dim SQL As String
For Each nm As String In Lst
If SQL > "" Then
SQL = SQL & " UNION "
End If
SQL = SQL & "Select * From {" & nm & "}"
Next
OutPut.Show("合成的SQL语句:" & SQL)
这种情况要用
UNION ALL
因为UNION 连接表之后,还会检查有没有重复记录。
呵呵,是应该加上All,因为这里不需要排除重复。
测试不行,我有如下疑问:
Dim lst As List(Of String)
Dim ym1 As Integer = "生产记录200905"‘这里应该是String才对
Dim ym2 As Integer = "生产记录201010" ‘这里应该是String才对
lst = Connections("nwnd").GetTableNames
For Each nm As String In lst
If nm>=ym1 AndAlso nm<=ym2 Then ‘String应该不能用>=或则<=号吧,但我不知道如何写,用 like '生产记录%' ?
lst.Add(nm)
End IF
Next
Dim SQL As String
For Each nm As String In Lst
If SQL > "" Then
SQL = SQL & " UNION ALL"
End If
SQL = SQL & "Select * From {" & nm & "}"
Next
OutPut.Show("合成的SQL语句:" & SQL)