V
vms01
Hallo,
ich habe zwei Tabellen T und H. Eine davon ist eine Tabelle mit meinen Daten, die andere Tabelle ist eine Hilfstabelle.
Die Hilfstabelle H hat nur 2 Spalten: H.E1_E2 und H.Ersatz.
Die Tabelle T hat sehr viele Spalten aber unter anderem auch die Spalten E1 und E2.
Ich möchte nun eine View basteln, die alle Spalten von T hat, wobei die Spalten E1 und E2 mit Werten aus H.Ersatz ersetzt werden, falls T.E1 = H.E1_E2 und/ oder T.E2 = H.E1_E2.
Dabei sollen aber genausoviele Datensätze als Ergebnis geliefert werden, wie bei einem Select * FROM T.
Ich hoffe das ist einigermaßen verständlich.
Nun das Statement:
Leider bekomme ich durch diesen LEFT OUTER JOIN und das OR jeweils einen Datensatz mehr sobald sowohl in T.E1 = H.E1_E2 UND T.E2 = H.E1_E2 etwas übereinstimmt. >>> Doppelte Datensätze.
Kann mir jemand etwas helfen, hab schon alles mögliche ausprobiert aber komme auf keine Lösung. DANKE.
ich habe zwei Tabellen T und H. Eine davon ist eine Tabelle mit meinen Daten, die andere Tabelle ist eine Hilfstabelle.
Die Hilfstabelle H hat nur 2 Spalten: H.E1_E2 und H.Ersatz.
Die Tabelle T hat sehr viele Spalten aber unter anderem auch die Spalten E1 und E2.
Ich möchte nun eine View basteln, die alle Spalten von T hat, wobei die Spalten E1 und E2 mit Werten aus H.Ersatz ersetzt werden, falls T.E1 = H.E1_E2 und/ oder T.E2 = H.E1_E2.
Dabei sollen aber genausoviele Datensätze als Ergebnis geliefert werden, wie bei einem Select * FROM T.
Ich hoffe das ist einigermaßen verständlich.
Nun das Statement:
SQL:
SELECT Spalte1, Spalte2, Spalte3 usw..,
CASE WHEN T.E1 = H.E1_E2 THEN H.Ersatz ELSE T.E1 END AS E1,
CASE WHEN T.E2 = H.E1_E2 THEN H.Ersatz ELSE T.E2 END AS E2,
FROM T LEFT OUTER JOIN H
ON T.E1 = H.E1_E2 OR ON T.E2 = H.E1_E2
Leider bekomme ich durch diesen LEFT OUTER JOIN und das OR jeweils einen Datensatz mehr sobald sowohl in T.E1 = H.E1_E2 UND T.E2 = H.E1_E2 etwas übereinstimmt. >>> Doppelte Datensätze.
Kann mir jemand etwas helfen, hab schon alles mögliche ausprobiert aber komme auf keine Lösung. DANKE.
Zuletzt bearbeitet von einem Moderator: