[MySQL 4.1] Anzahl der Datensätze counten bei benutzung von GROUP

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

  • [MySQL 4.1] Anzahl der Datensätze counten bei benutzung von GROUP

    Hi,

    hab hier ein kleines Problem und kommen grad nicht hinter:

    Code:
    SELECT 
     
    count(id)
    
    FROM 
    tab1
    
    GROUP BY user_id
    
    HAVING count(id) > 10

    Die Tabelle ist Beispielsweise ein Gästebuch. Es gibt eine id, einer user_id und einen Text. Um nun eine "TopPoster" Tabelle aufzustellen nutze ich diese Query. (natürlich mit Limit etc.)

    Wenn jetzt wissen möchte, wieviel Positionen es in dieser Ergebnis-Tabelle gibt, wie stelle ich das an?

    Analog zu "SELECT count(*) FROM tab1".

    Evtl hat einer von euch ja nen Tip. Thnx

    PS: Ich weiß, ich könnte einfach die Query ausführen und mysql_num_rows() benutzen um die Anzahl der Zeilen im Result zu erhalten. Alldergins weigere ich mich ein wenig () alle Datensätze zu selektieren um nur einen Wert heraus zu bekommen.

  • #2
    Kann dir leider nicht helfen, stehe aber gerade genau vor der selben Frage.
    Hat da jemand nen Tip zu ?
    Gruß

    Majjo

    Kommentar


    • #3
      Bin nach weiterer Suche dann doch noch fündig geworden.

      Hier meine Lösung, evtl. hilft es Dir ja auch...

      PHP-Code:
      mysql_query("SELECT empfaengerid, COUNT(*) as anzahl FROM postbox ".
      "GROUP BY empfaengerid HAVING anzahl > 25 ORDER BY anzahl DESC"); 
      Gruß

      Majjo

      Kommentar


      • #4
        OffTopic:
        Ich hab auch gesucht. Kennt ihr COUNT von COUNT? http://en.wikipedia.org/wiki/Count_von_Count
        ich glaube

        Kommentar


        • #5
          Rofl @ OffTopic


          Danke Majjo, allerdings bringt mich das nicht weiter. Deine Query macht genau das, was meine Beispielquery auch macht. Im Endeffekt möchte ich aber die Gesamtanzahl der Datensätze die

          Code:
          SELECT 
           
          count(id)
          
          FROM 
          tab1
          
          GROUP BY user_id
          
          HAVING count(id) > 10
          ergibt. Im Endeffekt das was mit mysql_num_rows() liefert...

          Kommentar


          • #6
            SQL_CALC_FOUND_ROWS / SELECT FOUND_ROWS()
            http://dev.mysql.com/doc/refman/4.1/...functions.html
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Für SQL_CALC_FOUND_ROWS / SELECT FOUND_ROWS() muss man doch auch erst die ganze Query ausführen, wenn ich das richtig verstanden habe.

              Ist praktisch dasselbe, wie mysql_num_rows, bloß als SQL.

              Gruß,
              ministry
              ich glaube

              Kommentar


              • #8
                Original geschrieben von ministry
                Für SQL_CALC_FOUND_ROWS / SELECT FOUND_ROWS() muss man doch auch erst die ganze Query ausführen, wenn ich das richtig verstanden habe.
                Jein - dabei musst du aber nicht die ganze Datenmenge erst nach PHP rüberschaufeln, etc.
                Ist praktisch dasselbe, wie mysql_num_rows, bloß als SQL.
                Nein, es ist LIMIT ohne LIMIT :-)

                Du bekommst nur das, was du per LIMIT ausgewählt hast - kannst aber zugleich noch die Anzahl abfragen, die du erhalten hättest, wenn du kein LIMIT genommen hättest ...
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  Jein - dabei musst du aber nicht die ganze Datenmenge erst nach PHP rüberschaufeln, etc.
                  Naja - ob ich jetzt ein Select mache und danach noch eins mit select_found_rows, oder ob ich jetzt ein select mache und danach mysql_num_rows.... da muss ich auch nichts "rüberschaufeln".

                  Aber das mit dem Limit ohne Limit hört sich nicht nur gut an, sondern könnte tatsächlich mal ganz praktisch sein, kannte ich noch nicht !

                  Eine Lösung für das o.g. Problem scheint es so (also ohne die ganze Query) nicht zu geben, oder?
                  ich glaube

                  Kommentar


                  • #10
                    Bisher habe ich immer mein Select ausgeführt und danach halt noch ein SELECT count(*) FROM tab WHERE... gemacht.

                    Genau diese Funktionalität suchte ich mit GROUP.
                    Das mit dem SQL_CALC_FOUND_ROWS scheint genau das zu sein, danke...

                    Kommentar

                    Lädt...
                    X