Post Count

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

  • Post Count

    Hi,
    ich habe eine Tabelle in meiner Datenbank in der ich Forenbeiträge speichere. Jetzt möchte ich für jeden User die Anzahl der von ihm geschriebenen Beiträge ermitteln.
    Das klappt soweit auch schon und zwar in etwa so:

    SELECT COUNT(*) FROM Beitraege WHERE User=theUser

    Das ganze gehe ich in einer Schleife für jeden User durch.
    Jetzt möchte ich aber ganz oben den mit der größten Anzahl stehen haben und unten den mit der geringsten. Wie kann ich das hinbekommen? gibts da ne SQL-Lösung?

  • #2
    Re: Post Count

    Original geschrieben von maddinel
    Das ganze gehe ich in einer Schleife für jeden User durch.
    ist nicht dein ernst, oder?

    kombiniere COUNT() ALIAS mit GROUP BY und ORDER BY ALIAS und lass den user im WHERE weg ... die schleifen auch.
    Kissolino.com

    Kommentar


    • #3
      Danke für die verspottende Antwort!
      Wieso solls nicht mein Ernst sein?
      Sowas regt mich auf!
      Du musst wohl zugeben, dass der SQL-Befehl nicht für jeden gerade Super-Standard ist, oder?

      Kommentar


      • #4
        ich verspotte dich nicht, frage mich aber, ob du bei 100, 1000 oder womöglich 10000 usern die datenbank "verspotten" oder "verschrotten" willst?

        sql-abfragen in schleifen zu packen, ist nicht gerade die feine englische art ... deshalb der ^^ lösungsvorschlag. wenn der dir auf anhieb nicht klar genug ist, benutze mal das mysql-manual und forensuche, dann wird manches klarer.
        Kissolino.com

        Kommentar


        • #5
          Ok danke.
          Ich wollte dich nur darauf hinweisen, dass es nicht sehr nett rüber kam.
          Ich hab auch nicht jedesmal die Abfrage drin, sondern so:

          SQL-Abfrage

          while($user = mysql_fetch_array($result)
          {
          ..
          }

          Wo finde ich das mysql-Manual?

          Kommentar


          • #6
            Bitte unterstütz mich bei deinem SQL-BeFEHL ETWS: iCH komme auch mit manual nicht weiter.

            Kommentar


            • #7
              Original geschrieben von maddinel
              Wo finde ich das mysql-Manual?
              http://dev.mysql.com/doc/refman/4.0/de/index.html

              ps: manchmal ist auch die fragestellung mis(s/t)verständlich
              Kissolino.com

              Kommentar


              • #8
                OffTopic:
                Keine Ahnung, aber erst mal auf die Palme gehen ...
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  OffTopic:
                  Keine Ahnung, aber erst mal auf die Palme gehen ...
                  Was hast das eine mit dem anderen zu tun?

                  Kommentar


                  • #10
                    OffTopic:
                    hat mir mal jemand gesagt: "es gibt select-anweisungen, die über eine a4 seite lang sind und mit dem richtigen select-befehl bekommt fast alles hin, was man möchte, egal wie komplex." mittlerweile glaub ich das sogar, also ran an die arbeit.

                    wenn du dir alle user ausgeben lassen möchtest und dazu die anzahl ihrer topics, dann mach das doch über einen select-befehl und nicht über viele kleine. das wollte dir wurzel mit seinem ersten posting rüber bringen.
                    wenn du die select-anfrage hast, dann kannst du dein ergebnis in ein array hauen, das sogar sortieren (damit hast du den user mit den meisten/wenigsten topics). dann brauchst du dir die user nur noch aus deinem array suchen. klingt doch supie, oder?
                    also wie könnte der selectbefehl aussehen? (wir helfen, wenn du anfängst )
                    ich geh zum lachen in den keller

                    Kommentar


                    • #11
                      Das mit dem ausführlichen SELECt hab ich ja mittlerweile auch kapiert
                      Ich brauche ja theoretisch die Userdaten nur sortiert nach anzahl der Einträge im Array stehen haben. Dann geb ich die so aus. Aber wie bekomme ich sie auf diese Art und weise in das Array?

                      PS: nehmts mir nicht über, ich wollte nicht rumstänkern zu beginn dieses Threads

                      Kommentar


                      • #12
                        PHP-Code:
                        $myarray=array();
                        $erg=mysql_query($Suchstring);
                        while(
                        $row=mysql_fetch_row($erg))
                        {  
                        $merker=array();
                           for(
                        $x=0;$x<count($row);$x++)
                             
                        $merker=push($row($x));
                           
                        $myarray=push($merker);

                        ohne garantie und sicher viel zu umständlich.
                        ich geh zum lachen in den keller

                        Kommentar


                        • #13
                          Was genau macht denn dieses push? Ich das im PHP-Manual nicht gefunden, da gab es nur ein array_push

                          Kommentar


                          • #14
                            *reusper* das meinte ich eigentlich.
                            tschuldige, war schnell zusammengeschrieben. ich habs nicht probiert.
                            so soll dein array ja mal aussehen ((user1, 20 topics, sieht toll aus), (user2, 2 topics, sieht nicht so toll aus), ....)

                            also ließt du aus deinem ergebnis zeilenweise die daten.
                            --> user1, 20 topics, sieht toll aus

                            und packst es index für index in $merker mit array_push
                            --> 20 topics, sieht toll aus
                            $merker --> (user1)

                            -->sieht toll aus
                            $merker -->(user1, 20 topics)

                            ...

                            und wenn das einmal durchgelaufen ist, dann packst du den kompletten merker ins myarray.
                            das einzigste, was (noch) nicht hinhauen könnte, ist count in der for-schleife.
                            ich geh zum lachen in den keller

                            Kommentar


                            • #15
                              falls count() nicht klappen sollte dann nimm bitte
                              PHP-Code:
                              $anzahl=mysql_num_fields($erg); //noch vor der while schlife
                              ...
                              for(
                              $x=0;$x<$anzahl;$x++)
                              ... 
                              ich geh zum lachen in den keller

                              Kommentar

                              Lädt...
                              X