Leuchter: Gruppieren eines Ergebnisses

Hallo,

ich möchte gerne ein Ergebniss aus einer mysql-Abfrage nach Alter und Titel gruppieren. Hierbei sind Alter und Titel jeweils 1 Feld aus meiner Tabelle.

Beispiel: Jens,18Jahre,Schüler,männlich,lesen,wenigposter

Das ist ein Datnsatz aus meinem Abfrageergebnis.

Nun möchte ich in der Schleife

while ($row_abfrage=mysql_fetch_row($result_abfrage)) { ... }

ein Ergenis produzieren, welches ich später so ausgebe:

<a href=...link>18 Jahre und Wenigposter</a> und bei Klick auf den Link werden dann alle Namen aufgezählt.

Irgendwie raff ich ads aber nicht so ganz :-(

Wer hilft mir mal auf die Sprünge, wie ich das Problem angehen soll?

Grüße

Leuchter

  1. hi,

    ich möchte gerne ein Ergebniss aus einer mysql-Abfrage nach Alter und Titel gruppieren.
    Hierbei sind Alter und Titel jeweils 1 Feld aus meiner Tabelle.

    dann solltest du dies bereits bei der abfrage von der DB machen lassen.

    sieh dir im manual den SELECT-zusatz GROUP BY an.

    while ($row_abfrage=mysql_fetch_row($result_abfrage)) { ... }

    ein Ergenis produzieren, welches ich später so ausgebe:

    <a href=...link>18 Jahre und Wenigposter</a> und bei Klick auf den Link werden dann alle Namen aufgezählt.

    im link solltest du dann zwei parameter übergeben, einen für das alter 18 und einen für den titel wenigposter.

    die zugehörige query lautet dann
    SELECT ... ... WHERE alter = 18 AND titel = 'wenigposter'

    (die backticks um alter müssen sein, weil ALTER ein reserviertes wort ist. die spalte anders zu benennen, wäre günstiger.)

    gruss,
    wahsaga

    1. Hallo,

      SELECT ... ... WHERE alter = 18 AND titel = 'wenigposter'
      (die backticks um alter müssen sein, weil ALTER ein reserviertes wort ist. die spalte anders zu benennen, wäre günstiger.)

      Noch guenstiger waere es IMHO, das Geburtsdatum zu speichern.
      (Spaltentyp z.B. DATE)
      In einem Jahr ist Jens naemlich 19...

      SCNR + Gruesse,

      Thomas

      1. Hi,

        klar, das ist auch nur ein Beispiel, in Wirklichkeit gehts gar nicht ums Alter und den titel :-) Aber leiben wir ruhig mal dabei. Ich finde den group by Zusatz nicht im manual. Habt Ihr mal bitte einen Link da?

        Danke auf jeden fall schonmal für Eure Hilfe, klasse, daß ich nicht in die falsche Richtung unterwegs bin :-)

        Leuchter

        1. Hallo,

          Ich finde den group by Zusatz nicht im manual.

          http://www.mysql.com/doc/en/SELECT.html
          http://www.mysql.com/doc/en/GROUP-BY-Functions.html

          http://www.infos24.de/mysqle/handbuch/3_mysql_count.htm
          http://www.dclp-faq.de/q/q-sql-aggregation.html

          http://www.google.com/search?q=mysql+"group+by"

          Danke auf jeden fall schonmal für Eure Hilfe, klasse, daß ich nicht in die falsche Richtung unterwegs bin :-)

          Gruppieren, Sortieren u.s.w. mit PHP waere IMHO die falsche
          Richtung, wenn es mit MySQL geht.

          Gruesse,

          Thomas

          --
          Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
          Ich mag es, wenn URLs verlinkt sind (</faq/#Q-19>).
          Oft gestellte PHP-Fragen beantwortet die dclp-FAQ bestens: http://www.dclp-faq.de/
          1. Gruppieren, Sortieren u.s.w. mit PHP waere IMHO die falsche Richtung, wenn es mit MySQL geht.

            Gruesse,

            Thomas

            Hi Thomas,

            ja, das sehe ich genauso. Danke für die Links, ich bin nun schon ne echte Ecke weiter, aber ich habe wohl mein eigendliches Problem nicht ganz richtig beschrieben.

            Denn ich kenne ja weder Namen noch Titel und wenn ich sowohl Namen als auch Titel in meine Abfragequery übernehmen soll, habe ich ein Problem :-(

            SELECT ... ... WHERE `alter` = 18 AND titel = 'wenigposter'
            

            ist so leider nicht drin, weil ich beide Bedingungen nicht kenne.

            Verstehst Du, was ich meine?

            Alter und Titel sind vom User frei wählbar :-)

            Hast Du oder ein anderer noch nen guten Tip für mich?

            Grüße

            Leuchter

            1. ja, das sehe ich genauso. Danke für die Links, ich bin nun schon ne echte Ecke weiter, aber ich habe wohl mein eigendliches Problem nicht ganz richtig beschrieben. Denn ich kenne ja weder Namen noch Titel und wenn ich sowohl Namen als auch Titel in meine Abfragequery übernehmen soll, habe ich ein Problem :-( SELECT ... ... WHERE alter = 18 AND titel = 'wenigposter' ist so leider nicht drin, weil ich beide Bedingungen nicht kenne.

              Verstehst Du, was ich meine?

              Alter und Titel sind vom User frei wählbar :-)

              Hast Du oder ein anderer noch nen guten Tip für mich?

              Hm, oder bringt es etwa sowas in der Art von

              select distinct(alter),Titel from tabelle group by Name
              

              ?

              Grüße

              Leuchter

              1. Hi,

                hier das Ergebnis:

                $querysql="select UserName,Kategorie,PostID from tabelle where Test=1 group by UserName,Kategorie";
                

                Ich kapiers zwar nicht so ganz 100%ig, aber das Ergebinis (selber aus den Links zusammengesucht) bringt das richtige Ergebnis.

                Es sollen alle (frei wählbaren) Kategorien nach Username und Kategoriename sortiert werden, aber wenn ein User z.B. 4 Postings unter demselben Kategorienamen postet, soll trotzdem nur 1 mal gezählt werden.

                Das klappt. Kann mir einer sagen, warum genau?

                Grüße

                Leuchter

            2. Hallo,

              Denn ich kenne ja weder Namen noch Titel und wenn ich sowohl Namen als auch Titel in meine Abfragequery übernehmen soll, habe ich ein Problem :-(
              SELECT ... ... WHERE alter = 18 AND titel = 'wenigposter'
              ist so leider nicht drin, weil ich beide Bedingungen nicht kenne.
              Alter und Titel sind vom User frei wählbar :-)

              Bitte werde ganz konkret.
              Sag, was Du fuer Felder hast, wie sie heissen, welchen Typ sie haben.
              Wie ich schon sagte, waere z.B. "Alter" IMHO kein schlaues Feld,
              weil "Jahrgang" bzw. "Geburtsdatum" besser geeignet waere.

              Wenn Du nach Dingen sortieren lassen willst, dann sind
              voellig freie String-Felder (VARCHAR u.s.w.) IMHO weniger
              geeignet; besser waere z.B. ENUM, also eine vorgegebene
              Anzahl Moeglichkeiten.

              Wenn es dann um die Abfrage geht, also um den Weg
              HTML-Formular => SQL-Query, solltest Du besondere
              Vorsicht walten lassen, damit Dir keine boesen Jungs
              irgendwelche Streiche spielen. Stichwort "SQL Injection".
              Lies dazu insbesondere den Abschnitt "Sicherheit" der
              dclp-FAQ:
              http://www.dclp-faq.de/ch/ch-security.html
              und such mal hier im </archiv/>, z.B. mit den
              Begriffen tom, bitworks, mysql_escape_string ;-)

              Gruesse,

              Thomas

              --
              Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
              Ich mag es, wenn URLs verlinkt sind (</faq/#Q-19>).
              Oft gestellte PHP-Fragen beantwortet die dclp-FAQ bestens: http://www.dclp-faq.de/