Frage zu SQL

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Frage zu SQL

    Hallo Leute

    ich bin ein sql neuling und bin gerade dabei daten auszuwerten....

    mein problem ist es daten zusammen zu fassen....

    Ich habe 2 Datenbanken

    die erste ist eine Adressdatenbank und die andere zusatzdaten zu den adressen z.b. telefonnummer faxnummer email adresse....

    daten banken nennen wir mal adressen und zusatz

    ich habe folgendes problem die daten zu bekommen ist nicht das problem....
    nur hab ich ein feld in der datenbank zusatz weches alle kommunitkationsdaten entählt das welche kommunikationsdaten verwendet werden enscheidet ein anderes feld pas feld priorität welche nur mit zustand 0(also leer) 1 oder 2 belegt sein kann...

    MAFA02 ist die Adress Datenbank
    MAFA04 ist die Adress Zusatz Datenbank

    habe folgende abfrage gestaltet...

    SELECT MAFA02.FELD03 as Kunden ,
    MAFA02.FELD04 as Anrede ,
    MAFA02.FELD23 as Vorname ,
    MAFA02.FELD05 as Nachname,
    MAFA02.FELD26 as Name2 ,
    MAFA02.FELD07 as Strasse ,
    MAFA02.FELD27 as Hausnr ,
    MAFA02.FELD08 as Land ,
    MAFA02.FELD09 as PLZ ,
    MAFA02.FELD10 as Ort ,
    MAFA03.FELD17 as Liefer ,
    MAFA03.FELD44 as KKlasse ,
    MAFA03.FELD50 as Formular,
    MAFA03.FELD19,
    IIF(Substring(mafa04.Feld06,1,1)= '', MAFA04.FELD08,'') as VTel,
    IIF(Substring(mafa04.Feld06,1,1)= '', MAFA04.FELD05,'') as Tel,
    IIF(Substring(mafa04.Feld06,1,1)= '', MAFA04.FELD04,'') as Art,
    IIF(Substring(mafa04.Feld06,1,1)= '', MAFA04.FELD06,'') as Prio,
    IIF(Substring(mafa04.Feld06,1,1)= '1', MAFA04.FELD08,'') as VFax,
    IIF(Substring(mafa04.Feld06,1,1)= '1', MAFA04.FELD05,'') as Fax,
    IIF(Substring(mafa04.Feld06,1,1)= '1', MAFA04.FELD04,'') as Art1,
    IIF(Substring(mafa04.Feld06,1,1)= '1', MAFA04.FELD06,'') as Prio1,
    IIF(Substring(mafa04.Feld06,1,1)= '2', MAFA04.FELD05,'') as Email,
    IIF(Substring(mafa04.Feld06,1,1)= '2', MAFA04.FELD04,'') as Art2,
    IIF(Substring(mafa04.Feld06,1,1)= '2', MAFA04.FELD06,'') as Prio2

    FROM (MAFA02 left outer JOIN MAFA03 ON (MAFA02.FELD03 = MAFA03.FELD03) AND
    (MAFA02.FELD02 = MAFA03.FELD02) AND
    (MAFA02.FELD01 = MAFA03.FELD01))
    left outer JOIN MAFA04 ON (MAFA03.FELD03 = MAFA04.FELD03) AND
    (MAFA03.FELD02 = MAFA04.FELD02) AND
    (MAFA03.FELD01 = MAFA04.FELD01)
    WHERE Substring(mafa04.Feld06,1,1)= '' or
    Substring(mafa04.Feld06,1,1)= '1' or
    Substring(mafa04.Feld06,1,1)= '2'

    Immer wenn ich diesen code ausführe bekomme ich wenn ich z.b. diese adresse mir anschaue 3 Datensäte....

    Karl Mustermann
    Königstr. 1
    12345 Musterstadt
    Tel:0123-123
    Fax:0123-456
    Email: karl@mustermann.de


    und so sieht das dann aus-->

    Name Vorname Str. PlZ Stadt VTEL TEL Prio art VTEL TEL Prio1 Art1 Email Prio2 Art2
    Mustermann Karl Königstr.1 12345 Musterstadt 0123 123
    Mustermann Karl Königstr.1 12345 Musterstadt 0123 456 1 1
    Mustermann Karl Königstr.1 12345 Musterstadt karl@mustermann 2 2

    Kennt jemand von euch einen befehl womit ich vermeiden kann das die ausgabe der kommunikationsdaten in jeweils eigene zeilen kommen die adresse ändert sich ja nicht wirklich.....

    wenn ihr noch infos brauch dann meldet euch eben.....

  • #2
    Deine Struktur ist sowas von...

    Machs so:

    tabelle: user
    anrede, firstname, lastname

    tabelle: additional (nenn sie wie du willst)
    phone, fax, mail, icq

    Gib den Tabellen und Spalten wenigstens namen, dass man da noch durchblickt.

    Zum Auslesen siehst du dir mal unseren Thread über JOINS ("das leidige Thema") an.

    Fertig.

    Kommentar


    • #3
      an der datenbank kann ich leider nichts ändern ist nicht von mir gestalltet ist von unserem software dienstleister gemacht......


      Ich muss die daten nur in eine reihe bekomme......

      Kommentar


      • #4
        Dann benutz trotzdem Joins. Mit den Feldnamen musst du halt klar kommen...

        Kommentar


        • #5
          die lösung ist glaub ich so......

          SELECT MAFA02.FELD03 as Kunden ,
          MAFA02.FELD04 as Anrede ,
          MAFA02.FELD23 as Vorname ,
          MAFA02.FELD05 as Nachname,
          MAFA02.FELD26 as Name2 ,
          MAFA02.FELD07 as Strasse ,
          MAFA02.FELD27 as Hausnr ,
          MAFA02.FELD08 as Land ,
          MAFA02.FELD09 as PLZ ,
          MAFA02.FELD10 as Ort ,
          MAFA03.FELD17 as Liefer ,
          MAFA03.FELD44 as KKlasse ,
          MAFA03.FELD50 as Formular,
          MAFA03.FELD19,
          tel.FELD08 as VTel,
          tel.FELD05 as Tel,
          tel.FELD04 as Art,
          tel.FELD06 as Prio,
          fax.FELD08 as VFax,
          fax.FELD05 as Fax,
          fax.FELD04 as Art1,
          fax.FELD06 as Prio1,
          ema.FELD05 as Email,
          ema.FELD04 as Art2,
          ema.FELD06 as Prio2
          FROM MAFA02 left outer JOIN MAFA03 ON
          MAFA02.FELD03 = MAFA03.FELD03 AND
          MAFA02.FELD02 = MAFA03.FELD02 AND
          MAFA02.FELD01 = MAFA03.FELD01
          left outer JOIN MAFA04 tel ON
          MAFA02.FELD03 = tel.FELD03 AND
          MAFA02.FELD02 = tel.FELD02 AND
          MAFA02.FELD01 = tel.FELD01 AND
          Substring(tel.Feld06,1,1)= ''
          left outer JOIN MAFA04 fax ON
          MAFA02.FELD03 = fax.FELD03 AND
          MAFA02.FELD02 = fax.FELD02 AND
          MAFA02.FELD01 = fax.FELD01 AND
          Substring(fax.Feld06,1,1)= '1'
          left outer JOIN MAFA04 ema ON
          MAFA02.FELD03 = ema.FELD03 AND
          MAFA02.FELD02 = ema.FELD02 AND
          MAFA02.FELD01 = ema.FELD01 AND
          Substring(ema.Feld06,1,1)= '2'

          so einfach kann es sein

          Kommentar


          • #6
            einfach sieht anders aus. Zumindest was die Feldnamen betrifft

            Kommentar


            • #7
              wie hättest du das denn gemacht?

              Kommentar


              • #8
                ich hab dir schon gesagt, dass ich die Feldnamen n bisschen umständlich finde. Aber da kannst du ja nichts dran änder.

                Kommentar

                Lädt...
                X