Hi,
heute stehe ich vor folgendem Problem:
Es exisiteren drei Datenbanken, die u.a. eine Tabelle enthalten, die in jeder der Datenbanken den gleichen Namen trägt.
Bevor ich mich hier aber "textuell" in dunkle Gefilde bewege, hier lieber eine tabellarische Übersicht.
Es exitieren also die drei Datenbanken 'Germany', 'United_Kingdom' und 'United_States'.
Jede Datenbank enthält u.a. die Tabelle 'Exportgueter'.
Der Name dieser Tabelle ist in jeder der DBs gleich.
Jetzt möchte ich wissen, wie viel Artikel exportiert wurden.
Aber nicht nur bezogen auf ein Land, sondern auf alle drei Länder.
Ich benötige also eine Abfrage, die mir über die drei Datenbanken geht.
Meine erste Idee waren SELECT-Anweisungen mit UNION:
[highlight=sql]
SELECT [Bezeichnung],[Stueck] FROM [Germany].[dbo].[exportgueter]
UNION
SELECT [Bezeichnung],[Stueck] FROM [United_Kingdom].[dbo].[exportgueter]
UNION
SELECT [Bezeichnung],[Stueck] FROM [United_States].[dbo].[exportgueter]
[/highlight]
Als Ergebnis erhalte ich:
Inhaltlich sieht das doch schon gut aus.
ABER...es fehlt natürlich noch eine Spalte, die mir Auskunft über das Land gibt.
Da das Land nicht in einer Tabelle gesichert ist, kann ich auf keine entsprechene
Spalte zugreifen. Ich müsste den Namen der jeweiligen Datenbank ermitteln und
in einer zusätzlichen Spalte darstellen.
Nur wie ?
Die Ermittlung des Datenbanknamens ist soweit klar.
(z. B. mit EXEC sp_databases...es gibt ja noch andere Möglichkeiten)
Aber wie stelle ich das dann in einer zusätzlichen Spalte dar?
Mit CREATE VIEW oder JOINs oder einer anderen Form der SELECT-Anweisung?
Die Ausgabe könnte dann z.B. wie folgt aussehen:
...und um es noch ein bissel weiter zu treiben...der Ferrari unter den Abfragen, würde mir folgende Tabelle ausgeben:
Da scheint dann aber schon extrem tricky zu sein. ,-)
Danke
Dickus
heute stehe ich vor folgendem Problem:
Es exisiteren drei Datenbanken, die u.a. eine Tabelle enthalten, die in jeder der Datenbanken den gleichen Namen trägt.
Bevor ich mich hier aber "textuell" in dunkle Gefilde bewege, hier lieber eine tabellarische Übersicht.
Code:
SQL-Server 2008 (MS SQL) DB : Germany DB : United_Kingdom DB : United_States TAB: Exportgueter TAB: Exportgueter TAB: Exportgueter +--+-----------+------+ +--+-----------+------+ +--+-----------+------+ |ID|Bezeichnung|Stueck| |ID|Bezeichnung|Stueck| |ID|Bezeichnung|Stueck| +--+-----------+------+ +--+-----------+------+ +--+-----------+------+ | 1|Tastatur | 3000| | 1|Tastatur | 2000| | 1|Tastatur | 5000| +--+-----------+------+ +--+-----------+------+ +--+-----------+------+ | 2|Malblock | 10000| | 2|Malblock | 6000| | 2|Malblock | 8000| +--+-----------+------+ +--+-----------+------+ +--+-----------+------+ | 3|Maus | 4000| | 3|Maus | 10000| | 3|Maus | 15000| +--+-----------+------+ +--+-----------+------+ +--+-----------+------+
Jede Datenbank enthält u.a. die Tabelle 'Exportgueter'.
Der Name dieser Tabelle ist in jeder der DBs gleich.
Jetzt möchte ich wissen, wie viel Artikel exportiert wurden.
Aber nicht nur bezogen auf ein Land, sondern auf alle drei Länder.
Ich benötige also eine Abfrage, die mir über die drei Datenbanken geht.
Meine erste Idee waren SELECT-Anweisungen mit UNION:
[highlight=sql]
SELECT [Bezeichnung],[Stueck] FROM [Germany].[dbo].[exportgueter]
UNION
SELECT [Bezeichnung],[Stueck] FROM [United_Kingdom].[dbo].[exportgueter]
UNION
SELECT [Bezeichnung],[Stueck] FROM [United_States].[dbo].[exportgueter]
[/highlight]
Als Ergebnis erhalte ich:
Code:
+-----------+------+ |Bezeichnung|Stueck| +-----------+------+ |Malblock | 6000| +-----------+------+ |Malblock | 8000| +-----------+------+ |Malblock | 10000| +-----------+------+ |Maus | 4000| +-----------+------+ |Maus | 10000| +-----------+------+ |Maus | 15000| +-----------+------+ |Tastatur | 2000| +-----------+------+ |Tastatur | 3000| +-----------+------+ |Tastatur | 5000| +-----------+------+
ABER...es fehlt natürlich noch eine Spalte, die mir Auskunft über das Land gibt.
Da das Land nicht in einer Tabelle gesichert ist, kann ich auf keine entsprechene
Spalte zugreifen. Ich müsste den Namen der jeweiligen Datenbank ermitteln und
in einer zusätzlichen Spalte darstellen.
Nur wie ?
Die Ermittlung des Datenbanknamens ist soweit klar.
(z. B. mit EXEC sp_databases...es gibt ja noch andere Möglichkeiten)
Aber wie stelle ich das dann in einer zusätzlichen Spalte dar?
Mit CREATE VIEW oder JOINs oder einer anderen Form der SELECT-Anweisung?
Die Ausgabe könnte dann z.B. wie folgt aussehen:
Code:
+-----------+------+--------------+ |Bezeichnung|Stueck|Land | +-----------+------+--------------+ |Malblock | 6000|United_Kingdom| +-----------+------+--------------+ |Malblock | 8000|United_States | +-----------+------+--------------+ |Malblock | 10000|Germany | +-----------+------+--------------+ |Maus | 4000|Germany | +-----------+------+--------------+ |Maus | 10000|United_Kingdom| +-----------+------+--------------+ |Maus | 15000|United_States | +-----------+------+--------------+ |Tastatur | 2000|United_Kingdom| +-----------+------+--------------+ |Tastatur | 3000|Germany | +-----------+------+--------------+ |Tastatur | 5000|United_States | +-----------+------+--------------+
Code:
+--------+-------+--------------+-------------+ | |Germany|United_Kingdom|United_States| +--------+-------+--------------+-------------+ |Malblock| 10000| 6000|8000 | +--------+-------+--------------+-------------+ |Maus | 4000| 10000|15000 | +--------+-------+--------------+-------------+ |Tastatur| 3000| 2000|5000 | +--------+-------+--------------+-------------+
Danke
Dickus
Comment