Supportnet / Forum / Datenbanken
SQL Join über drei Tabellen
Frage
Hi Leute.
Mein SQL ist leider nicht das Beste. Es funktioniert zwar, aber nicht ganz so wie es soll... Ich hoffe Ihr könnt mir weiterhelfen.
Ich arbeite hier auf einem MS SQL Server und möchte den Inhalt dreier Tabellen verbinden. Dabei sollen Duplicate rausfallen.
Hier die Tabellen:
v_R_System (Spalten: NetBios0, ResourceID)
v_HS_COMPUTER_SYSTEM (Spalten: ResourceID, Model0)
v_GS_PC_BIOS (Spalten: ResourceID, SerialNumber0, Name0)
Hier mein SQL Query:
SELECT sys.Netbios_Name0, pc.Model0, bios.SerialNumber0, bios.Name0
from ((v_R_System sys inner join v_GS_PC_BIOS bios on sys.ResourceID = bios.ResourceID) inner join v_HS_COMPUTER_SYSTEM pc on sys.ResourceID = pc.ResourceID)
where sys.Netbios_Name0 like @variable
Jetzt bekomme ich aber dreimal das gleiche angezeigt? Was mache ich da falsch???
Hintergrund:
Microsoft SMS2003. Ich möchte einen PC Namen eingeben und dessen Seriennummer und Modell ausgeben. Leider stehen Name, Seriennummer und das Modell in drei unterschiedlichen Tabellen. :-/
Danke schonmal für die Hilfe.
Gruss @all,
Dirk
Antwort 1 von hendrikw
Kommt die ResourceID in einer der Tabellen mehrfach (3x) vor ?
mfg
Hendrik
mfg
Hendrik
Antwort 2 von semi
Versuche es damit
Mehrere Einträge kann es hier geben, wenn
- sys.Netbios_Name0 LIKE @variable liefert mehr als 1 Datensatz
- bios.ResourceID mehrfach vorhanden
- pc.ResourceID mehrfach vorhanden
Gruß,
Michael
SELECT sys.Netbios_Name0, pc.Model0, bios.SerialNumber0, bios.Name0
FROM v_R_System sys, v_GS_PC_BIOS bios, v_HS_COMPUTER_SYSTEM pc
WHERE sys.Netbios_Name0 LIKE @variable
AND bios.ResourceID = sys.ResourceID
AND pc.ResourceID = sys.ResourceIDIst eine etwas übersichtlichere Syntax.Mehrere Einträge kann es hier geben, wenn
- sys.Netbios_Name0 LIKE @variable liefert mehr als 1 Datensatz
- bios.ResourceID mehrfach vorhanden
- pc.ResourceID mehrfach vorhanden
Gruß,
Michael
Antwort 3 von Rodi
Hi.
Erstmal Danke für Eure Antworten.
Die Query funktioniert soweit.
Ja, ich fürchte es gibt Duplikate in der Datenbank. Bedingt durch die Verteilungsmechanismen von SMS das alles in die DB schreibt.
Kann ich das irgendwie nur für die Anzeige reduzieren? Ich habe leider keine Datenbankdesigns zur Verfügung anhand derer ich rausfinden könnte wie die Relationen sind und was wo steht. Es gab doch irgendein Kommando "Select distinct" oder so was.
Gruss @all,
Dirk
Erstmal Danke für Eure Antworten.
Die Query funktioniert soweit.
Ja, ich fürchte es gibt Duplikate in der Datenbank. Bedingt durch die Verteilungsmechanismen von SMS das alles in die DB schreibt.
Kann ich das irgendwie nur für die Anzeige reduzieren? Ich habe leider keine Datenbankdesigns zur Verfügung anhand derer ich rausfinden könnte wie die Relationen sind und was wo steht. Es gab doch irgendein Kommando "Select distinct" oder so was.
Gruss @all,
Dirk
Antwort 4 von draack
Hi,
"SELECT DISTINCT ..."
Tschö,
Volker
"SELECT DISTINCT ..."
Tschö,
Volker
Antwort 5 von Rodi
Hi.
Select Distinct hat die Duplicate ausgelassen.
Jetzt geht's. Vielen Dank nochmal an alle. ;)
Gruss @all,
Dirk
Select Distinct hat die Duplicate ausgelassen.
Jetzt geht's. Vielen Dank nochmal an alle. ;)
Gruss @all,
Dirk

