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

Zusammenfassen von Daten

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von Enigma228, 11 November 2013.

  1. Enigma228

    Enigma228 Benutzer

    Hi Leute.. hab mal wieder ne Frage..

    ich habe 3 Tabellen member, position, pos_of_a_member (sind nur Testdummys)
    member kann mehrere positionen haben und position mehrere Member also n:m

    position (id, title)
    member (id, name, vorname)
    pos_of_a_member (id, member_id, pos_id)

    Wie ich sie aufrufe verstehe ich,
    Code:
    SELECT member.vorname, member.name, position.title
    FROM pos_of_a_member AS pom
    LEFT JOIN member ON member.id = pom.member_id
    LEFT JOIN position ON position.id = pom.pos_id
    Aber das ruft alle mit Wiederholungen bei den membern auf.

    Ich möchte es so haben :
    vorname, name, title (alle in einer Zeile)

    z.B.
    "Hans" "Wurst" "Fussballgott, Weltwunder, Spassbremse"

    Wie mache ich sowas?

    Vielen Dank im Voraus
    Thomas












     
    Zuletzt bearbeitet: 11 November 2013
  2. akretschmer

    akretschmer Datenbank-Guru

    Du willst also die Titel aggregieren, oder?

    Bei deinem MySQL geht das irknwie mit string_concat oder so, ich nutze das Spielzeug nicht.
     
  3. Enigma228

    Enigma228 Benutzer

    Wie wäre deine Anfrage bei PostgreSQL.. vielleicht kann ich mir daraus den Hinweis holen den ich brauche..
     
  4. akretschmer

    akretschmer Datenbank-Guru

    Code:
    test=*# select * from foo;
    i |  t
    ---+-------
    1 | foo
    1 | bar
    2 | batz
    2 | bla
    1 | laber
    2 | sülz
    (6 rows)
    
    Time: 0,181 ms
    test=*# select i, array_agg(t) from foo group by i;
    i |    array_agg
    ---+-----------------
    1 | {foo,bar,laber}
    2 | {batz,bla,sülz}
    (2 rows)
    
    Time: 0,230 ms
    test=*# select i, array_to_string(array_agg(t),',') from foo group by i;
    i | array_to_string
    ---+-----------------
    1 | foo,bar,laber
    2 | batz,bla,sülz
    (2 rows)
    
     
  5. Enigma228

    Enigma228 Benutzer

    Du wirst es kaum glauben, aber das war die Lösung..

    Code:
    SELECT member.vorname, member.name, GROUP_CONCAT( position.title ) AS titel
    FROM pos_of_a_member AS pom
    LEFT JOIN member ON member.id = pom.member_id
    LEFT JOIN position ON position.id = pom.pos_id
    GROUP BY member.name
    Vielen Dank
    Thomas
     
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