Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

DB-Owner in SQL dynamisch ersetzen

Frage Entwicklung Datenbanken

Mitglied: Loonie

Loonie (Level 1) - Jetzt verbinden

11.11.2011 um 12:50 Uhr, 2393 Aufrufe, 1 Kommentar

Hallo,

ich habe für verschiedene Mandanten immer die gleiche Tabellenstruktur in einer Datenbank gespeichert. Außerdem habe ich eine Kundentabelle, die wie folgt aussieht:

Tabelle CMS.KUNDEN Spalten ( ProdOwner, Name, Beginn ...)
Beispiele sind ( M100, Mandant1, 01.01.2011) , (M200, Mandant2, 01.04.2011) ...

Die Tabellen des Kunden haben jeweils den DB-Benutzer vorweggestellt, also M100.TABELLE1

Bislang habe ich es so gelöst:

SELECT 'Mandant1', Name, Datum, Flag1 FROM M100.TABELLE1
UNION
SELECT 'Mandant2', Name, Datum, Flag1 FROM M200.TABELLE1
...

Wie kann ich es clever lösen, dass alle Mandantennummern aus der Kundentabelle mit einer verschachtelten Abfrage durchlaufen werden.

Danke und Gruß

Thomas
Mitglied: Indrador
24.11.2011 um 23:14 Uhr
Zitat von Loonie:
Hallo,

ich habe für verschiedene Mandanten immer die gleiche Tabellenstruktur in einer Datenbank gespeichert. Außerdem habe
ich eine Kundentabelle, die wie folgt aussieht:

Tabelle CMS.KUNDEN Spalten ( ProdOwner, Name, Beginn ...)
Beispiele sind ( M100, Mandant1, 01.01.2011) , (M200, Mandant2, 01.04.2011) ...

Die Tabellen des Kunden haben jeweils den DB-Benutzer vorweggestellt, also M100.TABELLE1

Bislang habe ich es so gelöst:

SELECT 'Mandant1', Name, Datum, Flag1 FROM M100.TABELLE1
UNION
SELECT 'Mandant2', Name, Datum, Flag1 FROM M200.TABELLE1
...

Wie kann ich es clever lösen, dass alle Mandantennummern aus der Kundentabelle mit einer verschachtelten Abfrage durchlaufen
werden.

Danke und Gruß

Thomas


Hi,

ich weiß nicht, ob ich die Frage richtig verstanden habe, aber falls du alle Selects + UNION haben willst, gehts schnell so:
01.
Select	case rank() OVER (Order by mandant) 
02.
		when (select COUNT(mandant) from mandant ) then 
03.
		'SELECT Mandant'+	case	when RIGHT(mandant,1) <> 0 then substring(mandant,2,3) when RIGHT(mandant,2) <> 00 then substring(mandant,2,2) else substring(mandant,2,1) end+', Name, Datum, Flag1 FROM ' + mandant + '.TABELLE1' 
04.
		else 
05.
		'SELECT Mandant'+	case	when RIGHT(mandant,1) <> 0 then substring(mandant,2,3) when RIGHT(mandant,2) <> 00 then substring(mandant,2,2) else substring(mandant,2,1) end+', Name, Datum, Flag1 FROM ' + mandant + '.TABELLE1 UNION' 
06.
		end 
07.
from mandant
Funktioniert allerdings nur bis zu M###, M ist nicht abgedeckt aber einfach zu ergänzen. übersprungene Nummern sind kein Problem.

Gruß
Bitte warten ..
Ähnliche Inhalte
Datenbanken
SQL 2000 DB ist Fehlerverdächtig (3)

Frage von franksig zum Thema Datenbanken ...

Datenbanken
Backup restore SQL Express DB (7)

Frage von franksig zum Thema Datenbanken ...

Notebook & Zubehör
gelöst Taste ersetzen - wie? (6)

Frage von honeybee zum Thema Notebook & Zubehör ...

VB for Applications
gelöst DB-Abfrage in Excel mit Kriterien aus Excel (11)

Frage von JensDND zum Thema VB for Applications ...

Neue Wissensbeiträge
Humor (lol)

Wo ist der Fehler auf dem Bild?

Information von the-buccaneer zum Thema Humor (lol) ...

Windows Update

Offenbar erneutes MS-Update mit Fehlerschleife (2012 R2)

Information von VGem-e zum Thema Windows Update ...

Windows Installation

Unorthodoxer Weg, um an einen Offline-Installer für Adobe Flash zu kommen

(14)

Tipp von beidermachtvongreyscull zum Thema Windows Installation ...

Heiß diskutierte Inhalte
Exchange Server
gelöst Proxy Server Settings Cloud + EWS (17)

Frage von SomebodyToLove zum Thema Exchange Server ...

Windows Server
PDF Editor für den Einsatz auf Terminal Servern (16)

Frage von kwame501 zum Thema Windows Server ...

Windows Installation
Unorthodoxer Weg, um an einen Offline-Installer für Adobe Flash zu kommen (14)

Tipp von beidermachtvongreyscull zum Thema Windows Installation ...

Windows Server
S MIME Zertifikat aus AD in Outlook einbinden (12)

Frage von chb1982 zum Thema Windows Server ...