Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Ergebnisse aus Zeilen Spalten zuweisen

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von BadBunny, 10 Dezember 2014.

  1. BadBunny

    BadBunny Neuer Benutzer

    Hallo, ich wüsste gerne ob es möglich ist, einzelne Werte verschiedener Zeilen einer neuen Spalte zu zuweisen.
    Habe einfach mehrere Zeilen, die bis auf einen Wert gleich sind.

    Zeilen sehen entsprechend aus
    KdNr, Name, Nachname, PLZ, Ort, Telefon
    Wenn also jemand, mit gleicher Kundenummer mehrere Telefonummern hat, sollen diese in bis zu 5 Spalten, statt sich wiederholend in Zeilen.
    KdNr, Name, Nachname, PLZ, Ort, Telefon1 ... Telefon5
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Aggregiere das einfach zu einem String. Das kann sogar MySQL. Die Idee mit Spalten ist Murks.
     
  3. Distrilec

    Distrilec Datenbank-Guru

    Mach eine weitere Tabelle:

    Kommunikationsmethoden
    KdNr (Foreign Key)
    Art_der_Komm. (e-mail, telefonnr, etc.)
    wert (die e-mail adresse, telefonnr etc.)
     
    akretschmer gefällt das.
  4. akretschmer

    akretschmer Datenbank-Guru

    Da hast natürlich Recht, das Design da ist Müll.
     
  5. BadBunny

    BadBunny Neuer Benutzer

    Stehe allerdings vor dem Problem dass ich Rechtetechnisch zwar Views anlegen darf, aber keine neuen Tabellen und dass die Software, die mit dem Ergebnis arbeiten muss eine Tabelle erwartet.
    Muss also zwangsweise einen Workaround finden.
    Und ja, das gesamte Datenbanklayout hier ist Mist, aber vor meiner Zeit entstanden.
     
  6. ukulele

    ukulele Datenbank-Guru

    Mit GROUP BY und group_concat() oder wie das in MySQL heißt ließe sich akretschmers Vorschlag alle Telefonnummern hintereinander hängen umsetzen.

    Wenn du sagst du möchtest nur für Telefonnummern bis zu maximal 5 Spalten haben ginge es auch mit 4 Joins. Am Besten mit einem Zwischenschritt, erste Sicht:
    Code:
    SELECT   ROW_NUMBER() OVER (PARTITION BY KdNr ORDER BY Telefon) AS zeile,
         KdNr,
         Name,
         Nachname,
         PLZ,
         Ort,
         Telefon
    FROM   tabelle
    zweite Sicht:
    Code:
    SELECT   v1.KdNr,
         v1.Name,
         v1.Nachname,
         v1.PLZ,
         v1.Ort,
         v1.Telefon AS Telefon1,
         v2.Telefon AS Telefon2,
         v3.Telefon AS Telefon3,
         v4.Telefon AS Telefon4,
         v5.Telefon AS Telefon5
    FROM   view_temp1 v1
    LEFT JOIN view_temp1 v2
    ON     v1.KdNr = v2.KdNr
    AND     v2.zeile = 2
    LEFT JOIN view_temp1 v3
    ON     v1.KdNr = v3.KdNr
    AND     v3.zeile = 3
    LEFT JOIN view_temp1 v4
    ON     v1.KdNr = v4.KdNr
    AND     v4.zeile = 4
    LEFT JOIN view_temp1 v5
    ON     v1.KdNr = v5.KdNr
    AND     v5.zeile = 5
    WHERE   v1.zeile = 1
    
     
    Walter gefällt das.
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden