2017-11-14 1 views
-1

Alle Tabellen haben die gleiche Struktur die gleichen Spaltennamen.Wie wird dieselbe Abfrage für alle Tabellen in Access Database ausgeführt?

Hier ist ein Code:

UPDATE Table1 INNER JOIN TableX ON Table1.Column1= TableX.Column1 SET Table1.Column2 = TableX.Column2

Aber ich möchte diesen Code auf allen Tabellen auszuführen: Tabelle 2, Tabelle 3, Tabelle 4 .... Table30

+0

Ihre Anforderung ist nicht klar, bitte gewünschte Ausgabe zur Verfügung stellen. und vielleicht erklären, warum Ihre Abfrage nicht funktioniert? – Stephen

+0

Kannst du vielleicht erklären, was du zu erreichen versuchst? –

+0

Zum Beispiel gibt es 50 Tabellen. Jede Tabelle enthält einen identischen Spaltennamen namens ColumnName_X und ich möchte alle Werte anzeigen. –

Antwort

0

, wenn ich gut verstanden, das ist es funktioniert für Sie ...

SELECT AllTables.* 
FROM AllTables 
WHERE AllTables.ColumnName_X = AllTables.ColumnName_Y 
0

betrachten Vielleicht UNION ALL

SELECT ColumnName_X 
FROM table1 
WHERE ..... 
UNION ALL 
SELECT ColumnName_X 
FROM table2 
WHERE ..... 

Laut meinem Kommentar ist Ihre Anforderung nicht klar.

+0

SELECT Spalte1 VON UNION ALL (Tabelle1, Tabelle2, Tabelle3, Tabelle4) WHERE Spalte1 = Spalte2 Gibt es eine Lösung dafür? –

+0

@DemenyiNorbert das ist nicht möglich. Sie wetten am besten wie ich es erklärte. – Stephen

+0

@DemenyiNorbert Woher kommt 'Column2'? gleiche Tabelle? – Stephen

-1

verwenden Sie die folgende Abfrage eine Liste von Tabellen und dessen Schema enthält bestimmte Spalte (ColumnX)

SELECT 
    sys.columns.name AS ColumnName, 
    sys.tables.name AS TableName, 
    schema_name (sys.tables.schema_Id) as schemaName 
FROM 
    sys.columns 
JOIN sys.tables ON 
    sys.columns.object_id = sys.tables.object_id 
WHERE 
    sys.columns.name = 'ColumnName' 
    --and schema_name (sys.tables.schema_Id) = 'schemaName' 

Ausgabe zu erhalten: (falls columnX ID ist)

ColumnName TableName schemaName 
ID   MusicApp dbo 
id   employ  dbo 

Werte von ID zu erhalten , können Sie über Abfragen speichern, die in #temptable ausgegeben werden und Schleife verwenden, um dynamisch zu holen

hoffe, das hilft dir :)

+0

Ich möchte so etwas wie tun: \t SELECT Spalte1 von UNION alle (Tabelle1, Tabelle2, Tabelle3, Tabelle4) WHERE Spalte1 = Spalte2 oder SELECT Spalte1 FROM sys.tables WHERE Spalte1 = Spalte2 –

+0

Der Benutzer arbeitet mit Access - nicht SQL Server. –

0

Die meisten der Antworten hier nehmen SQL Server - das ist kein Tag kein Teil dieser Frage und wird nicht funktionieren.

wenn Ihre Tabellen Tabelle1 table30 genannt werden, dann sollte diese Arbeit:

Dim strSQL  As String 
Dim i   As Integer 
Dim strTable  As String 

For i = 1 To 10 
    strTable = "Table" & i 
    strSQL = "update " & strTable & _ 
      " inner join TableX on " & strTable & ".column1 = TableX.Column1" & _ 
      " SET " & strTable & ".Column2 = TaxbleX.Column2" 
Debug.Print strSQL 

CurrentDb.Execute strSQL 

Next i 
Verwandte Themen