Heim >Datenbank >MySQL-Tutorial >Wie führe ich eine tabellenlose UNION-Abfrage in MS Access durch?
Tabellenlose UNION-Abfrage in MS Access (Jet/ACE)
In Microsoft Access mit der Jet/ACE-Datenbank-Engine können Fehler auftreten, wenn Sie versuchen, eine UNION-Abfrage zu verwenden, ohne eine Tabellendatenquelle anzugeben. Es erscheint die Fehlermeldung „Die Abfrageeingabe muss mindestens eine Tabelle oder Abfrage enthalten“.
Diese Einschränkung ergibt sich aus der Forderung der Engine nach mindestens einer Tabelle oder Abfrage in der FROM-Klausel, auch wenn keine Felder aus dieser Datenquelle verwendet werden. Um dieses Problem zu lösen, können Sie eine virtuelle Tabelle verwenden, die immer eine einzelne Zeile enthält.
Virtuelle Tabelle erstellen
<code>Public Sub CreateDualTable() Dim strSql As String strSql = "CREATE TABLE Dual (id COUNTER CONSTRAINT pkey PRIMARY KEY);" Debug.Print strSql CurrentProject.Connection.Execute strSql strSql = "INSERT INTO Dual (id) VALUES (1);" Debug.Print strSql CurrentProject.Connection.Execute strSql strSql = "ALTER TABLE Dual" & vbNewLine & _ vbTab & "ADD CONSTRAINT there_can_be_only_one" & vbNewLine & _ vbTab & "CHECK (" & vbNewLine & _ vbTab & vbTab & "(SELECT Count(*) FROM Dual) = 1" & vbNewLine & _ vbTab & vbTab & ");" Debug.Print strSql CurrentProject.Connection.Execute strSql End Sub</code>
Verwenden Sie virtuelle Tische
Mithilfe virtueller Tabellen können Sie jetzt tabellenlose UNION-Abfragen erstellen:
<code>SELECT "foo" AS my_text FROM Dual UNION ALL SELECT "bar" FROM Dual;</code>
Alternative Methoden
Alternativ können Sie eine SELECT-Anweisung mit einer TOP 1- oder WHERE-Klausel verwenden, um die Ergebnismenge auf eine einzelne Zeile zu beschränken.
Bitte beachten Sie, dass Prüfeinschränkungen nur in Anweisungen verfügbar sind, die über ADO (CurrentProject.Connection.Execute) ausgeführt werden. DAO (CurrentDb.Execute) unterstützt das Erstellen von Prüfeinschränkungen nicht.
Das obige ist der detaillierte Inhalt vonWie führe ich eine tabellenlose UNION-Abfrage in MS Access durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!