Mehrere Zeilen in einem Query zusammenfassen

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

  • 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.

    Comment


    • #3
      Originally posted by ApoY2k View Post
      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

      Comment


      • #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. :-)
        Last edited by Guenni61; 09-03-2012, 02:06.

        Comment


        • #5
          Originally posted by Guenni61 View Post
          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

          Comment


          • #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.
            Last edited by Woerni; 11-03-2012, 19:27.

            Comment

            Working...
            X