Liebe Toonia.
kein Problem, jeder fängt irgendwann mal an
Wenn es diese Stammdatentabelle gibt würde ich sie auch verwenden und nicht mit CASE arbeiten.
Der Nachteil am CASE wie zuletzt beschrieben ist, dass du damit die Texte fest im Select angeben würdest (z.B. den Text „männlich“ und den Text „weiblich“). Wenn sich jetzt aber mal der Text in der Stammdatentabelle ändert (z.B. in „Mann“ und „Frau“) müsstest du dein Select und evtl. auch viele andere Selects bei denen du auch so gearbeitet hast ebenfalls ändern.
Besser wäre es, du würdest du Stammdatentabelle mehrfach joinen. Mal ein theoretisches Beispiel mit Geschlecht, Anrede und Nationalität:
SELECT tab.id, ges.text, anr.text, nat.text
FROM tabelle tab
JOIN stammdaten ges ON (tab.code_geschlecht = ges.code)
JOIN stammdaten anr ON (tab.code_anrede = anr.code)
JOIN stammdaten nat ON (tab.code_nationalitaet = nat.code)
Wie du siehst gibt es hier die theoretische Tabelle „Tabelle“ der ich der Übersichtlichkeit halber das Kürzel „tab“ verpasst habe. Diese enthält die drei Spalten mit den verschiedenen Codes (code_geschlecht, code_anrede und code_nationalitaet).
Die Stammdatentabelle wird nun jeweils einmal mit jedem Code gejoined.
Jede bekommt ihr eigenes Kürzel (ges, anr und nat).
Mit dem Kürzel kann man nun bei den Spaltenangaben die entsprechenden Textspalten angeben.
Wichtig bei diesem Beispielselect wäre, dass die Codes auch immer gefüllt und nie NULL sind. Nehmen wir theoretisch mal an, es wäre doch möglich, dass die Nationalität nicht gefüllt sein muss, dann würde der Join für betroffene Datensätze nicht funktionieren. Stattdessen müsste man dann mit Outer Join arbeiten um die Datensätze ohne Nationalität ebenfalls anzuzeigen, also z.B. so:
SELECT tab.id, ges.text, anr.text, nat.text
FROM tabelle tab
JOIN stammdaten ges ON (tab.code_geschlecht = ges.code)
JOIN stammdaten anr ON (tab.code_anrede = anr.code)
LEFT OUTER JOIN stammdaten nat ON (tab.code_nationalitaet = nat.code)
Ändert mann nun in der Stammdatentabelle irgendeinen der Texte, dann müssen die Selects nicht angepasst werden. Die Texte werden ja aus der Tabelle ermittelt.
Hilft dir das weiter?
Viele Grüße
Marco