Ankündigung

Einklappen
Keine Ankündigung bisher.

SQL Abfrage, Werte Zusammenfassen

Einklappen

Neue Werbung 2019

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

  • SQL Abfrage, Werte Zusammenfassen

    Hallo Zusammen

    Ich überlege und suche aber irgendwie sehe ich keine pragmatische Lösung. Ich habe eine MySQL DB und habe eine entsprechende Abfrage erstellt und kriege die Daten wie folgt ausgegeben:

    HTML-Code:
      	id="17" id="AA" 	id="17" id="AA-Wert" 	id="17" id="54:23" 	id="17" id="["Geschafft"]" 	id="29" id="BB" 	id="29" id="BB-Wert" 	id="29" id="80:00" 	id="29" id="["Nicht geschafft"]"  etc.
    Ich möchte die Werte mit der selben ID in die selbe Tabellen-Zeile bringen. Ich frage die Werte wie folgt ab in PHP:

    HTML-Code:
    $sql = " SELECT * FROM tx_powermail_domain_model_answer WHERE pid = 51";
    dann die Ausgabe:

    HTML-Code:
    echo '<ul>';
    $ind=0;
    while ($row = @mysqli_fetch_assoc($result)){
      echo '<li>';
      echo 'id="' . $row['mail'] . '" ';
      echo 'id="' . $row['value'] . '" ';
      echo '</li>';
      $ind = $ind + 1;
    }
    echo '</ul>';
    Dachte an GROUP BY und JOINs aber das hilft mir irgendwie nichts. Mache ich es besser dann in PHP?

    Danke für einen Tipp und Grüsse, Thomas.

  • #2
    Zitat von niederberger Beitrag anzeigen
    Dachte an GROUP BY und JOINs aber das hilft mir irgendwie nichts.
    Nur dran denken reicht halt nicht.

    Mache ich es besser dann in PHP?

    Nein.

    Viel mehr kann man nun aber hier auch nicht sagen - zu wenig Informationen.
    PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

    Kommentar


    • #3
      Du solltest mal Deine Tabellendefinition zeigen und eine typische Abfrage einer Datenmenge, die Du gerne transformieren möchtest. Dabei ist es nicht hilfreich, wenn Du PHP Code zeigst und offen lässt, wie welche Darstellung erzeugt wurde.
      Entscheidend für eine richtige Hilfe ist DDL und vorhandene Daten, exemplarisch.
      Und wie bereits geschrieben, nein, Du willst alles was geht mit SQL machen, denn das ist dafür geschaffen worden und wahrscheinlich in 99% die schnellste und beste Wahl.

      Anhand Deine Beschreibung möchtest Du vielleicht eine PIVOT Funktion haben, die gibt es nicht in mySQL.
      Hier ein PostgreSQL Beispiel
      https://www.vertabelo.com/blog/techn...sstab-function

      Es gibt Workarounds, um auch in anderen Systemen sowas per SQL zu erzeugen.

      Kommentar


      • #4
        Herzlichen Dank. Ich habe gesucht und konnte eine Lösung mit folgendem finden:
        HTML-Code:
        SELECT mail, GROUP_CONCAT(value) AS 'values' FROM tx_powermail_domain_model_answer WHERE pid=51 GROUP BY mail;

        Kommentar


        • #5
          Die unterschiedlichen value's werden hier #4 mit GROUP_CONCAT() mehr oder weniger zufällig aneinandergereiht und als ein Feldelement ausgegeben. Mag sein, das dies für die vorliegende Aufgabe ausreicht.

          Für eine Pivotierung (die unterschiedlichen value in jeweils einer eigenen Spalte unter MySQL auszugeben) bedarf es einer weiteren Information (Spalte), welche den Typ von value beinhaltet.
          Ob diese Information hier vorliegt ist offen.

          Mehr dazu incl.Lösung/Woraround für MySQL s. hier:
          MySQL: Gruppieren und Gruppenelemente mit in der Zeile ausgeben

          PHP-Lösung auf der Basis von Arrays:
          https://github.com/jspit-de/tableArray



          Kommentar

          Lädt...
          X