Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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, 2381 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 ...

VB for Applications
Anpassungsdatei verschiedene Parameter (Hostname, SQL, Registry) ändern (3)

Frage von MiMa89 zum Thema VB for Applications ...

Backup
Veeam Endpoint Backup findet SQL Datenbank nicht (1)

Frage von FFSephiroth zum Thema Backup ...

Heiß diskutierte Inhalte
Exchange Server
gelöst Email in Exchange an 2ten Empfänger senden (18)

Frage von MultiStorm zum Thema Exchange Server ...

Weiterbildung
Gehaltsvorstellungen (14)

Frage von SYS64738 zum Thema Weiterbildung ...

Windows Server
gelöst Microsoft-Lizenz CALs und passendes Server-Betriebssystem (13)

Frage von planetIT2016 zum Thema Windows Server ...

Verschlüsselung & Zertifikate
gelöst Festplattenverschlüsselung im Ausland (13)

Frage von Nicolaas zum Thema Verschlüsselung & Zertifikate ...