SQL - Abfragen - Mehrere Tabellen - Problem WHERE-Filter
Guten Morgen,
ich muss mich derzeit mit SQL-Abfragen rumschlagen, um unsere Inventarisierung etwas Übersichtlicher zu gestallten.
Mein Problem ist jetzt folgendes. Ich habe vier Tabellen in denen meine benötigten Infos stehen.
Mein Ziel ist die Ausgabe wie folgt zu Programmieren:
Rechnername, IP-Adresse, OS, OS Lizenz, Office, Office Lizenz.
Wenn auf einem Rechner ein Office installiert ist, funktioniert es auch so wie ich es möchte. Jedoch nicht wenn kein Office installiert. Da ich mit dem Befehl "WHERE" arbeite, liegt hier mein Fehler, aber ich weißt auch nicht wie ich es anders bauen könnte. Bin leider etwas raus aus dem ganzen Abfrage Thema.
Hier mein Code bisher,
SELECT T1.HostID ,T1.Hostname, T1.IpOnline,
T2.DocuID, T2.HostID,
T3.DocuID, T3.OS, T3.OSArchitecture, t3.LicenseKey,
T4.DocuID, T4.SoftwareLicenseKey, T4.SoftwareName
FROM Clients T1, Documentation T2, DocumentationDetails T3, SoftwareT4
WHERE T1.HostID = T2.HostID
AND t2.DocuID = T3.DocuID
AND t4.DocuID = T2.DocuID
AND t4.SoftwareName LIKE 'Microsoft O%'
Order By HostName
Ich gehe davon aus, dass ich die vierte Zeile in der "WHERE"-Abfrage ändern muss. Könnt ihr mir hier weiterhelfen?
Vielen Dank.
ich muss mich derzeit mit SQL-Abfragen rumschlagen, um unsere Inventarisierung etwas Übersichtlicher zu gestallten.
Mein Problem ist jetzt folgendes. Ich habe vier Tabellen in denen meine benötigten Infos stehen.
Mein Ziel ist die Ausgabe wie folgt zu Programmieren:
Rechnername, IP-Adresse, OS, OS Lizenz, Office, Office Lizenz.
Wenn auf einem Rechner ein Office installiert ist, funktioniert es auch so wie ich es möchte. Jedoch nicht wenn kein Office installiert. Da ich mit dem Befehl "WHERE" arbeite, liegt hier mein Fehler, aber ich weißt auch nicht wie ich es anders bauen könnte. Bin leider etwas raus aus dem ganzen Abfrage Thema.
Hier mein Code bisher,
SELECT T1.HostID ,T1.Hostname, T1.IpOnline,
T2.DocuID, T2.HostID,
T3.DocuID, T3.OS, T3.OSArchitecture, t3.LicenseKey,
T4.DocuID, T4.SoftwareLicenseKey, T4.SoftwareName
FROM Clients T1, Documentation T2, DocumentationDetails T3, SoftwareT4
WHERE T1.HostID = T2.HostID
AND t2.DocuID = T3.DocuID
AND t4.DocuID = T2.DocuID
AND t4.SoftwareName LIKE 'Microsoft O%'
Order By HostName
Ich gehe davon aus, dass ich die vierte Zeile in der "WHERE"-Abfrage ändern muss. Könnt ihr mir hier weiterhelfen?
Vielen Dank.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 285096
Url: https://administrator.de/contentid/285096
Ausgedruckt am: 22.11.2024 um 14:11 Uhr
12 Kommentare
Neuester Kommentar
Moin,
den Tail mit der Officeinstallation hab ich jetzt nicht verstanden. Was verwendest du denn als DB Backend? MSSQL? Access?
Und was genau bedeutet "funkltioniert nicht"? Fehlermeldung?
Versuchs mal so:
lg,
Slainte
den Tail mit der Officeinstallation hab ich jetzt nicht verstanden. Was verwendest du denn als DB Backend? MSSQL? Access?
Und was genau bedeutet "funkltioniert nicht"? Fehlermeldung?
Versuchs mal so:
SELECT T1.HostID ,T1.Hostname, T1.IpOnline,
T2.DocuID, T2.HostID,
T3.DocuID, T3.OS, T3.OSArchitecture, t3.LicenseKey,
T4.DocuID, T4.SoftwareLicenseKey, T4.SoftwareName
FROM Clients T1
JOIN Documentation T2 on T1.HostID = T2.HostID,
DocumentationDetails T3 on t2.DocuID = T3.DocuID,
SoftwareT4 on t4.DocuID = T2.DocuID
WHERE t4.SoftwareName LIKE 'Microsoft O%'
lg,
Slainte
Ahhhh logisch ... denkfehler!
Versuchs mal mit folgendem FROM
... dann natürlich kein separates WHERE mehr....
Versuchs mal mit folgendem FROM
...
FROM Clients T1
LEFT OUTER JOIN Documentation T2 on T1.HostID = T2.HostID
LEFT OUTER JOIN DocumentationDetails T3 on t2.DocuID = T3.DocuID
LEFT OUTER JOIN (SELECT * FROM Software WHERE WHERE SoftwareName LIKE 'Microsoft O%') T4 ON t4.DocuID = T2.DocuID
...
... dann natürlich kein separates WHERE mehr....
bzw. auch das wird wohl zu keinem Ergebnis führen...
mach:
noch geschickter wäre es vielleicht nur die gewünschten Office Bezeichnungen in eine zu packen und diese dann auch direkt in die Unterabfrage zu integrieren anstatt in die globale WHERE-Klausel... aber das ist Feinform.
mach:
...
And (T4.SoftwareName NOT LIKE 'Microsoft Office File Validation Add-In' OR T4.SoftwareName IS NULL)
...
noch geschickter wäre es vielleicht nur die gewünschten Office Bezeichnungen in eine
WHERE SoftwareName IN ('Microsoft Office 2003', 'Microsoft Office 2007',.....)