Hallo =)
Ich habe ein Problem mit einer SQL-Abfrage. Es geht um Folgendes:
(Stark vereinfacht)
----------------------------------------------------------------------------------------------
Vertrag (Tabelle 1) --> Tabelle mit Verträgen
Vertrags_ID(PS)|Text_ID(FS)|
Text (Tabelle 2) --> Tabelle mit Texten die in den Verträgen stehen
Text_ID(PS)|Text
HardwareVertrag (Tabelle 3) --> Verknüpfung zwischen Hardware und Vertrag
Hardware_ID(PS)|Vertrags_ID(PS)|HardwareNr.
----------------------------------------------------------------------------------------------
Jetzt möchte ich alle Verträge ausgeben mit zustäzlich dem Text (falls vorhanden) und der HardwareNr (fallsvorhanden). Wenn beides oder eins von beiden nicht vorhanden ist soll er den Vertrag aber trotzdem ausgeben. Also wirklich jeden Vertrag.
----------------------------------------------------------------------------------------------
SELECT
V.Vertrags_ID, T.Text, HV.HardwareNr
FROM
Vertrag as V
LEFT JOIN
Text as T ON V.Text_ID = T.Text_ID
LEFT JOIN
HardwareVertrag as VT ON V.Vertrags_ID = HV.Vertrags_ID
----------------------------------------------------------------------------------------------
Das war meine Idee. Das Problem ist ich bekomme fast alle Datensätze doppelt und dreifach. Es liegt am zweiten LEFT JOIN, da ich ohne ihn das Problem nicht habe.
Allerdings weiß ich nicht direkt was ich falsch gemacht habe bzw. was ich ändern müsste.
Kann mir das einer vielleicht helfen?
Ich habe ein Problem mit einer SQL-Abfrage. Es geht um Folgendes:
(Stark vereinfacht)
----------------------------------------------------------------------------------------------
Vertrag (Tabelle 1) --> Tabelle mit Verträgen
Vertrags_ID(PS)|Text_ID(FS)|
Text (Tabelle 2) --> Tabelle mit Texten die in den Verträgen stehen
Text_ID(PS)|Text
HardwareVertrag (Tabelle 3) --> Verknüpfung zwischen Hardware und Vertrag
Hardware_ID(PS)|Vertrags_ID(PS)|HardwareNr.
----------------------------------------------------------------------------------------------
Jetzt möchte ich alle Verträge ausgeben mit zustäzlich dem Text (falls vorhanden) und der HardwareNr (fallsvorhanden). Wenn beides oder eins von beiden nicht vorhanden ist soll er den Vertrag aber trotzdem ausgeben. Also wirklich jeden Vertrag.
----------------------------------------------------------------------------------------------
SELECT
V.Vertrags_ID, T.Text, HV.HardwareNr
FROM
Vertrag as V
LEFT JOIN
Text as T ON V.Text_ID = T.Text_ID
LEFT JOIN
HardwareVertrag as VT ON V.Vertrags_ID = HV.Vertrags_ID
----------------------------------------------------------------------------------------------
Das war meine Idee. Das Problem ist ich bekomme fast alle Datensätze doppelt und dreifach. Es liegt am zweiten LEFT JOIN, da ich ohne ihn das Problem nicht habe.
Allerdings weiß ich nicht direkt was ich falsch gemacht habe bzw. was ich ändern müsste.
Kann mir das einer vielleicht helfen?