2016-07-29 38 views
2

Ich habe viele Tabellen, die alle ähnlich benannt sind (wie "table1" "table2" "table3" usw.) und ich muss alle von ihnen in einer Abfrage verwenden. Sie enthalten alle die gleichen zwei Variablen ("ID" und "Datum"), denen sie beigetreten sind.Einfache Möglichkeit, viele Tabellen mit ähnlichen Namen in SSMS zu verbinden?

Es gibt mindestens 25 Tabellen dieser Art und ich habe nur Lesezugriff auf die Datenbank, so dass ich sie nicht kombinieren oder sogar eine Ansicht erstellen kann, die dies tun würde.

Meine Frage ist: Gibt es eine einfache Verknüpfung, die ich verwenden kann, um alle diese Tabellen zu verbinden? Wenn dies SAS wäre, würde ich ein Makro erstellen, aber ich bin mit Microsoft SQL Server Management Studio 2012

statt, um dies zu tun:

select * 
from table1 a 
join table2 b on a.id=b.id and a.date=b.date 
join table3 c on b.id=c.id and b.date=c.date 
join .... 
join .... 
join table25 y on x.id=y.id and x.date=y.date 

Ich möchte etwas tun:

select * 
from merge(table1 - table25) using(id, date) 

Ersetzen Sie die "merge" Anweisung oben mit allem, was angemessen ist. Ist so etwas möglich?

+0

Ehrlich gesagt ist 25 kein Schweiß. Aber ja, das Setzen eines Alias ​​ist ein Lebensretter. Auch kopieren und Vergangenheit ist dein Freund. Vor allem wenn die Joins ähnlich sind gehe zurück und justiere. –

+0

Ja, es ist absolut machbar. Ich bin immer auf der Suche nach effizienteren Code-Möglichkeiten und bin gespannt, ob das möglich ist oder nicht. – MsTiggy

+1

Nein, nicht möglich. – Jeremy

Antwort

-1

Wie in den Kommentaren erwähnt, existiert die prägnante Syntax nicht, die Sie suchen.

Der einzige Weg, um die SQL zu verkürzen, die sich die Tatsache zunutze nimmt, dass die Fügespalten alle using Schlüsselwort würde bedeuten, den gleichen Namen:

select * 
from table1 a 
join table2 b using (id, date) 
join table3 c using (id, date) 
join .... 
join .... 
join table25 y using (id, date) 

Aber leider funktioniert das wird auch nicht für Sie, weil das Schlüsselwort using in SQL Server nicht erkannt wird. Es funktioniert jedoch in anderen populären Datenbanken.

+0

Ich habe mich immer gefragt, warum SSMS das Schlüsselwort 'using' nicht erkennt. So nervig. – MsTiggy