[英]UNION of select fields from multiple tables
我需要創建多個涉及某種UNION的查詢。 我能夠弄清楚的唯一方法如下。 有什么方法可以簡化流程,所以我不需要為每個表單獨使用聯合體嗎? (我有大約50個表,不想每個表都要做)-使用Access數據庫
SELECT標題1,標題2,標題3,標題4
來自score_ADACOMPT
聯盟
SELECT標題1,標題2,標題3,標題4
來自score_ADADESG
聯盟
SELECT標題1,標題2,標題3,標題4
來自Score_API
聯盟
SELECT標題1,標題2,標題3,標題4
來自score_COMPCAC
聯盟
SELECT標題1,標題2,標題3,標題4
從Score_CRV
聯盟
我認為使用這種方法會遇到一些障礙。 我從來沒有找到官方文檔,但是Access一次只能處理這么多UNION操作。 它似乎取決於操作和查詢的復雜程度。 您可以嘗試編寫VBA來創建UNION查詢語法,並查看Access是否可以處理它。 如果是這樣,那就認為自己很幸運。
或者,您可以考慮創建一個表來保存這些值,然后運行追加查詢將數據加載到該表中。 這有其優點和缺點,取決於應用程序環境以及合並后打算如何處理數據。
遍歷DAO TableDefs並創建UNION查詢的示例:
Public Sub TestIt()
BuildUNIONQuery "UNIONTest"
End Sub
Public Sub BuildUNIONQuery(saveQueryName As String)
'builds a large union query for queries starting with "score_" and contains fields: Header1, Header2, header 3, header 4
Dim qryStr As String
Dim tDef As DAO.TableDef
Dim qDef As DAO.QueryDef
Dim db As DAO.Database
Set db = Access.CurrentDb
qryStr = ""
For Each tDef In db.TableDefs
If tDef.Name Like "score_*" Then
qryStr = qryStr & "SELECT [Header 1], [Header 2], [header 3], [header 4] "
qryStr = qryStr & "FROM [" & tDef.Name & "] "
qryStr = qryStr & "UNION "
End If
Next tDef
'remove last UNION from string
If Len(qryStr) > 0 Then
qryStr = Left(qryStr, Len(qryStr) - 6)
End If
If QueryExists(saveQueryName) Then 'query exits update SQL for current item
Set qDef = db.QueryDefs(saveQueryName)
qDef.SQL = qryStr
db.QueryDefs.Refresh
Else
Set qDef = db.CreateQueryDef(saveQueryName, qryStr)
db.QueryDefs.Refresh
End If
End Sub
Public Function QueryExists(qName As String) As Boolean
'determine if query name already exists in the database
Dim qDef As DAO.QueryDef
Dim db As DAO.Database
Set db = Access.CurrentDb
QueryExists = False
For Each qDef In db.QueryDefs
If qDef.Name = qName Then
QueryExists = True
Exit Function
End If
Next qDef
結束功能
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.