簡體   English   中英

從多個表中選擇字段的並集

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM