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

  • niederberger
    hat ein Thema erstellt SQL Abfrage, Werte Zusammenfassen.

    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.

  • jspit
    antwortet
    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



    Einen Kommentar schreiben:


  • niederberger
    antwortet
    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;

    Einen Kommentar schreiben:


  • Perry Staltic
    antwortet
    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.

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:

Lädt...
X