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
GELÖST

SQL SELCT Befehle Verschachteln Verbinden

Frage Entwicklung Datenbanken

Mitglied: mycroftone

mycroftone (Level 1) - Jetzt verbinden

30.11.2010, aktualisiert 21:19 Uhr, 12236 Aufrufe, 5 Kommentare

SELECT Befehle kombinieren / verschachteln / verbinden

Jetzt möchte ich ich einige SELECT Befehle die auf einen MS SQL 2000 Server zugreifen verschachtel / miteinander Verbinden so das ich nur einen SQL Befehl auf einmal habe.

Ich weiß zwar das man mit Join neue Tabelen / View ertellen kann oder mit Klammern Select Befehle ineinander Verschachtel kann aber irgendwie komm ich bei dem Join noch nicht weiter Vorallen weil meine ersten 2 Select Befehle ineinander mit () Verschachtel die jetzt noch mit Join also Pointer auf die Datenbank sowie iuch das Verstanden habe ist mir irgendwie im Moment zu hoch.

Also ich habe 4 Tabellen aus dennen ich Informationen raus holen will.

Für jede habe ich eine Select geschreiben.

Die Informationen aus den ersten beiden Tabellen hole ich mit folgender Abfrage.

01.
 
02.
SELECT 
03.
    ComputerID, 
04.
    Received 
05.
FROM 
06.
    dbo.InstallationHistory 
07.
WHERE PackageVersionID=( SELECT 
08.
    	                     PackageVersionID 
09.
	                  FROM 
10.
                            dbo.PackageVersion 
11.
                         WHERE Title='Officepaket' 
12.
                       ) and Result='success'  
13.
 
14.
 
Im zweite Select trag ich händisch das Ergebnis zu ComputerID in den Select Befehl ein der wie folgt aussieht.

01.
 
02.
SELECT 
03.
    ComputerName, 
04.
 FROM 
05.
    dbo.Computer 
06.
WHERE ComputerID=‘45’ 
07.
 

Im dritten Select trage ich händisch das Ergebniss aus dem Zweiten Select ein.

01.
 
02.
SELECT 
03.
    Netzwerk, 
04.
 FROM 
05.
    dbo.ADComputer 
06.
WHERE ComputerName=‘Verwaltung-Meier’ 
07.
 
Jetzt wollte ich alle drei Selects verbinden so das ich keine Daten händisch außer dem Paket im ersten Select eintragen muß.

Also Eingabe 'Titel' im ersten Select


Und Ausgabe zum Schluss Received Computername Netzwerk.


Wer kann mir da helfen.
Mitglied: Biber
30.11.2010 um 18:47 Uhr
Moin mycroftone,

meinst du so in etwa?
01.
SELECT PV.Title, IH.Received, AD.Computername,  AD.Netzwerk 
02.
  FROM  dbo.ADComputer       AD, dbo.Computername    Compi, 
03.
               dbo.PackageVersion PV, dbo.InstallationHistory    IH  
04.
  WHERE PV.Title='Officepaket' 
05.
AND IH.PackageVersionID = PV.PackageVersionID 
06.
AND IH.Result= 'success' 
07.
AND Compi.ComputerName = AD.Computername 
08.
AND Compi.ComputerID = IH.ComputerID
Die Reihenfolge der WHERE-Restriktiktionen sollte natürlich von der Selektivität der Daten ( auf Deutsch: Anzahl der Datensätze; Kardinalität und unterstützende Indizes) abhängen.
Ist bei mir vollkommen willkürlich hingewürfelt.
Die "überflüssige" Spalte PV.Title (=das 'Office-Paket', das du suchst) habe ich im resultSet ergänzt, sonst ist es relativ wertlos nach zwei Tagen.

Grüße
Biber
Bitte warten ..
Mitglied: dog
30.11.2010 um 18:48 Uhr
Gehen wir doch einfach rückwärts durch (MySQL-Syntax):
01.
SELECT 
02.
	pc.ComputerName, 
03.
	pc2.Netzwerk 
04.
FROM 
05.
	dbo.Computer pc 
06.
JOIN 
07.
	dbo.ADComputer pc2 ON (pc.ComputerName = pc2.ComputerName) 
08.
WHERE 
09.
	pc.ComputerID = '45'
Und in den nächsten rein:
01.
SELECT 
02.
	ih.ComputerID, 
03.
	ih.Received, 
04.
	pc.ComputerName, 
05.
	pc2.Netzwerk 
06.
FROM 
07.
	dbo.InstallationHistory ih 
08.
JOIN 
09.
	dbo.Computer pc ON (pc.ComputerID = ih.ComputerID) 
10.
JOIN 
11.
	dbo.ADComputer pc2 ON (pc.ComputerName = pc2.ComputerName) 
12.
WHERE 
13.
	ih.PackageVersionID = (SELECT PackageVersionID FROM dbo.PackageVersion WHERE Title = 'Officepaket') AND 
14.
	ih.Result = 'success'
Und zum Schluss das letzte Subselect raus:
01.
SELECT 
02.
	ih.ComputerID, 
03.
	ih.Received, 
04.
	pc.ComputerName, 
05.
	pc2.Netzwerk 
06.
FROM 
07.
	dbo.InstallationHistory ih 
08.
JOIN 
09.
	dbo.PackageVersion pv ON (pv.PackageVersionID = ih.PackageVersionID) 
10.
JOIN 
11.
	dbo.Computer pc ON (pc.ComputerID = ih.ComputerID) 
12.
JOIN 
13.
	dbo.ADComputer pc2 ON (pc.ComputerName = pc2.ComputerName) 
14.
WHERE 
15.
	pv.PackageVersion = 'Officepaket' 
16.
	ih.Result = 'success'
Bitte warten ..
Mitglied: mycroftone
30.11.2010 um 21:25 Uhr
Hallo Biber
ja so in der Art habe ich das von dir schon mal in einem anderen Theard von dir gesehen.
Konnte es aber leider auf meine nicht umsetzen.

Werde ich morgen früh wenn ich Zeit habe gleich mal ausprobieren.

Aber eine Frage habe ich noch. Braucht man unter MS SQL entgegen mySQL kein JOIN im Syntax.
Bitte warten ..
Mitglied: Biber
30.11.2010 um 22:18 Uhr
Moin mycroftone,

die Schreibweise ist zwar unterschiedlich, aber dog und ich haben beide den gleichen JOIN.

bei mir fehlt dieses Schlüsselwort zwar ganz, aber ein "WHERE tab1.id = tab2.foreignkey.." bedeutet genau dasselbe.

Die Bedingung "Werte müssen GLEICH sein" ist gleichbedeutend mit der Klausel INNER JOIN (Wert mmuss in beiden Tabellen vorhanden UND gleich sein).

Und dogs flapsiges "JOIN ON" ist die Kurzform von INNER JOIN. Alle anderen Formen (LEFT/RIGHT/OUTER/FULL) müssen explizit angegeben werden.

Kannst beides nehmen - bzw nimm das für dich les- und wartbarere.

dogs Variante finde ich offen gesagt nachvollziehbarer und sie sieht eindeutig sortierter aus.
Länger, aber geradliniger.

Grüße
Biber
Bitte warten ..
Mitglied: mycroftone
03.12.2010 um 18:10 Uhr
Hallo Dog

Wunderbar deine Kommandzeile brachte das gewünschte Ergebnis und ich habe es verstanden so das ich noch ein bisschen mehr rauskitzeln konnte.

Besten Dank
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Datenbanken
2 SQL Abfragen verbinden

Frage von cuxmini zum Thema Datenbanken ...

Datenbanken
gelöst SQL-Abfrage - DISTINCT - letztes Datum (3)

Frage von emeriks zum Thema Datenbanken ...

Windows 10
Surface 4 Pro Netzlaufwerk verbinden (3)

Frage von Yannosch zum Thema Windows 10 ...

Windows Server
gelöst Windows Server 2012 mit Fritzbox per VPN verbinden (13)

Frage von StefanT81 zum Thema Windows Server ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (12)

Frage von Motte990 zum Thema Microsoft Office ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...