Mehrere Zeilen in einem Query zusammenfassen

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

  • Mehrere Zeilen in einem Query zusammenfassen

    Hallo zusammen

    ich arbeite gerade mit einem generischen Datenmodell, das grob vereinfacht u.A. so aussieht:
    Code:
    Objekttabelle       Attributtabelle
    +--------+------+   +----------+-------+--------+
    | Object | type |   | ObjectID | value | type   |
    +---------------+   +----------+-------+--------+
    | 1      | bla  |   | 1        | 15    | status |
    +--------+------+   +----------+-------+--------+
                        | 1        | blubb | name   |   
                        +----------+-------+--------+
    Bei einem LEFT JOIN bekomme ich dann z.B. so ein Ergebnis:
    Code:
    +--------+-------+--------+
    | Object | value | type   |
    +--------+-------+--------+
    | 1      | 15    | status |
    +--------+-------+--------+
    | 1      | blubb | name   |
    +--------+-------+--------+
    Meine Frage ist nun Folgende. Ist es mit reinen(!) SQL-Mitteln möglich, so ein Ergebnis zu bekommen?
    Code:
    +--------+--------+--------+
    | Object | status | name   |
    +--------+--------+--------+
    | 1      | 15     | blubb  |
    +--------+--------+--------+
    Mir persönlich ist nichts dergleichen bekannt, aber vielleicht hat einer doch eine Idee.

    Peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

  • #2
    Spontan aus dem Bauch heraus ist das nur mit TSQL möglich (-> Pivot Tabellen)
    This is what happens when an unstoppable force meets an immovable object.

    Kommentar


    • #3
      Zitat von ApoY2k Beitrag anzeigen
      Spontan aus dem Bauch heraus ist das nur mit TSQL möglich (-> Pivot Tabellen)
      Sorry, hatte vergessen zu sagen, dass ich MySQL nutze.

      Trotzdem danke
      Peter
      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
      Meine Seite

      Kommentar


      • #4
        Hi Peter,
        vielleicht hilft dir ja die Funktion group_concat(Spaltenname SEPARATOR 'Trennzeichen') weiter?
        Code:
        select "Objekt" as "", group_concat(typ SEPARATOR ' --> ') as "" from t_objekte,t_attrib
        where t_objekte.objekt=t_attrib.objektid group by objekt
        [B]union[/B]
        select objekt, group_concat(value SEPARATOR '       --> ') from t_objekte,t_attrib
        where t_objekte.objekt=t_attrib.objektid group by objekt
        In einer Tabelle habe ich den Spaltennamen von Type auf Typ (siehe Abfrage) geändert (wg. Ein(Zwei)deutigkeit).

        Es werden allerdings keine einzelnen Zellen erzeugt, sondern die zusammengefassten Zeilen werden in einer
        Zelle dargestellt. Die Zeilenwerte können aber durch ein Trennzeichen (SEPARATOR) getrennt werden.

        Heraus kommt dann (in phpMyAdmin):
        Code:
        |-------------------------------|
        | Objekt  | Status --> Name     |
        |---------+---------------------|
        |     1   | 15      --> blubb   |
        |     2   | 12      --> laber   |
        |---------+---------------------|
        Gruß
        Günni

        PS.: Frag' mich bitte nicht nach der Syntax select "Objekt" as "", group_concat(typ SEPARATOR ' --> ') as "" im
        ersten Teil der Abfrage. Ich hab' mir grade selber eine Stunde lang einen "abgefrickelt", um die Tabellen so auszugeben. :-)
        Zuletzt geändert von Guenni61; 09.03.2012, 03:06.

        Kommentar


        • #5
          Zitat von Guenni61 Beitrag anzeigen
          Hi Peter,
          vielleicht hilft dir ja die Funktion group_concat(Spaltenname SEPARATOR 'Trennzeichen') weiter?
          Auch nicht wirklich. Werde das dann wohl per PHP aufdröseln.

          Trotzdem danke
          Peter
          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
          Meine Seite

          Kommentar


          • #6
            reine SQL-Lösung

            ok, Problemstellung erst im Nachgang korrekt verstanden :-)
            Löschen kann man seine eigenen Beiträge leider nicht.
            Da die Attributwerte einer Tabellenspalte selbst zu neuen Spaltennamen werden sollen, wird das so mit reinen SQL-Mitteln nicht machbar sein (z.B. nicht mit mySQL). Bei PL/SQL sähe es wieder anders aus.
            Zuletzt geändert von Woerni; 11.03.2012, 20:27.

            Kommentar

            Lädt...
            X