Announcement

Collapse
No announcement yet.

Union

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

  • Union

    Hallo

    Ich arbeite mit Interbase 7.5. Kann mir sagen wie ich die folgende Union zum laufen bringe?

    select
    person_pk,
    name || ' ' || vorname name_v,
    str_name || ' ' || haus_nr strasse,
    plz || ' ' || Ortname ort,
    null zusatz
    from v_person
    union
    select
    person_pk,
    name || ' ' || vorname name_v,
    str_name || ' ' || haus_nr strasse,
    adr_zusatz ort,
    plz || ' ' || Ortname zusatz
    from v_person
    order by name, vorname


    Ich ernte nur die Fehlermeldung "Data type unknown". Weiss mir Jemand Rat.

    Gruss Renato

  • #2
    Versuch mal:
    Code:
    select
      person_pk,
      name || ' ' || vorname name_v,
      str_name || ' ' || haus_nr strasse,
      plz || ' ' || Ortname ort,
    '' zusatz
    from v_person
    union
    select
      person_pk,
      name || ' ' || vorname name_v,
      str_name || ' ' || haus_nr strasse,
      adr_zusatz ort,
      plz || ' ' || Ortname zusatz
    from v_person
    order by name, vorname

    Comment


    • #3
      Ciao Markus

      Bringt nichts. Das Problem muss anderswo leigen. In der Zwischenzeit bin ich bei dieser Version angelangt.
      select
      a.person_pk,
      a.name || ' ' || a.vorname name_v,
      str_name || ' ' || haus_nr strasse,
      a.plz || ' ' || a.Ortname ort,
      a.adr_zusatz zusatz_v
      from v_person a
      where a.adr_zusatz = ''
      union
      select
      b.person_pk,
      b.name || ' ' || b.vorname name_v,
      b.str_name || ' ' || b.haus_nr strasse,
      b.adr_zusatz ort,
      b.plz || ' ' || b.Ortname zusatz_v
      from v_person b
      where b.adr_zusatz <> ''
      Jedes Select für sich funktioniert. Aber zusammen kommt immer diese blöde Fehlermeldung.

      Gruss Renato

      Comment


      • #4
        Hallo,

        Du mußt das Ergebnis jeder Stringkonkatenation über einen CAST auf einen VARCHAR bestimmer Länge casten. Somit gibst Du InterBase die notwendige Information, welche Datentypen bei der Stringkonkatenation im UNION verwendet werden.

        Thomas
        Thomas Steinmaurer

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

        Comment


        • #5
          Ciao Thomas

          Ja genau so get es. Hier noch die union so wie es funktioniert.

          select
          a.person_pk as person,
          a.name || ' ' || a.vorname as name,
          a.str_name || ' ' || a.haus_nr as strasse,
          cast((a.plz || ' ' || a.ortname) as varchar(100) CHARACTER SET ISO8859_1)as ort,
          cast((' ') as varchar(100) CHARACTER SET ISO8859_1) as zusatz
          from v_person a
          where a.adr_zusatz = ''
          union
          select
          b.person_pk as person,
          b.name || ' ' || b.vorname as name,
          b.str_name || ' ' || b.haus_nr as strasse,
          cast((b.adr_zusatz) as varchar(100) CHARACTER SET ISO8859_1) as ort,
          cast((b.plz || ' ' || b.Ortname) as varchar(100) CHARACTER SET ISO8859_1)as zusatz
          from v_person b
          where b.adr_zusatz <> ''

          Comment

          Working...
          X