Announcement

Collapse
No announcement yet.

Problem Anrede

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Problem Anrede

    Hallo,

    ich habe eine Adressdatentabelle mit einer Anrede-ID und eine Anredetabelle, die zu dieser ID die Anreden speichert. Ich würde nun gern mit einer SQL-Anweisung in der Form

    SELECT VORNAME, NAME, ANREDE(NAME) FROM ADRESSEN

    gern das ganze zusammenführen. Das Problem dabei ist, dass mal der Nachname an die Anrede rangehängt wird und mal nicht ("Sehr geehrte Damen und Herren" / "Sehr geehrter Herr Bogumil"). Diese Information kann man ja noch in der Anredentabelle hinterlegen, allerdings kann man innerhalb der SQL-Anweisung keine Felder nach Bedingungen zusammenstellen (in der Form SELECT (IF ANREDE_ZUSATZ=1 THEN ANREDE || NAME ELSE ANREDE) AS ANREDE FROM STAMM LEFT JOIN ANREDE...)

    Ich dachte an eine Stored Procedure, aber die kann - soweit ich weiss - nur komplette Ergebnismengen zurückliefern und nicht einzelne Felder.

    Hat jemand eine Lösung dafür parat?

  • #2
    Hallo Bruno,<br><br>
    was Dir in diesem Fall fehlt ist das CASE Statement von Oracle oder Firebird 1.5. Das folgende Beispiel sollte Dir die Idee geben, dass es mit einer Stored Procedur durchaus möglich ist, dies zu realisieren. In dieser Stored Procedure wird vorausgesetzt, dass sowohl AANREDE als auch ANAME nicht NULL sein können, weil somit die Stringverkettung immer funktioniert.<br><br>
    <pre>
    CREATE PROCEDURE P_ANREDE (AANREDE VarChar(40), ANAME VarChar(40), AANREDE_ZUSATZ Char(1)) returns (ANREDE VarChar(80))
    AS
    begin
    if (aanrede_zusatz = 1) then begin
    anrede = aanrede || ' ' || aname;
    end else begin
    anrede = aanrede;
    end
    suspend;
    end
    </pre>
    Der Aufruf dieser SELECTable Stored Procedure erfolgt dann durch ein "Inline-Select". z.B.:
    <pre>
    select
    vorname,
    name,
    (select anrede from p_anrede(a.anrede, a.name, a.anrede_zusatz)) as anrede
    from
    adresse a
    </pre>
    Gruss,<br>
    Thoma
    Thomas Steinmaurer

    Firebird Foundation Committee Member
    Upscene Productions - Database Tools for Developers
    Mein Blog

    Comment


    • #3
      Hallo Thomas,

      Klasse - genau dies habe ich gesucht! Dieses Inline-Select habe ich in einschlägigen Fachbüchern noch nie gesehen.

      Herzlichen Dank

      Comment

      Working...
      X