[MySQL 3.23.X] Erhaltene Datensätze zählen

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

  • [MySQL 3.23.X] Erhaltene Datensätze zählen

    Ich habe zwei Tabellen: Spiel und Spieler. Dabei werden einem Eintrag in Spiel mehrere Spieler zugeordnet.
    Und ich will nun die Anzahl an Spielen ermitteln, die mehr als x beteiligte Spieler haben.

    Gelöst ist das bisher so (vereinfachtes Beispiel)

    SELECT 1 FROM spiel,spieler WHERE spiel.id=spieler.spiel_id GROUP BY spiel.id HAVING count(*) > x


    Ich zähle dann in der Anwendung die Zeilen. Das ist natürlich sehr unpraktisch und ich hätte es gern direkt als Wert zurückgeliefert.

    Ein paar Hinweise dazu:
    SELECT count(*) bringt nicht das gewünschte Resultat!
    Ich habe mysql 3.23.x und nicht die Möglichkeit, mySQL 4 oder irgendeine andere Datenbank zu benutzen.

  • #2
    poste doch mal deine tabellen-struktur und ein paar demo-datensätze
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Naja eigentlich gibts da net viel zu sagen, das Problem beschränkt sich auf den beschriebenen Sachverhalt.


      Spiel [id,titel,datum]
      (1, "Auftaktspiel", 2003-07-15)
      (2, "2. Spiel", 2003-07-16)
      (3, "3. Spiel", 2003-07-17)

      Spieler [id, spielid, name]
      (1, 1, "Karl")
      (2, 1, "Peter")
      (3, 1, "Hans")
      (4, 1, "Udo")
      (5, 2, "Lisa")
      (6, 2, "Heinz")
      (7, 3, "Ralf")
      (8, 3, "Tobias")

      So und jetzt will ich z.B. die Anzahl aller Spiele herausfinden, in denen 4 Spieler mitgespielt haben. Die Datensätze zu ziehen, ist gar kein Problem:

      SELECT spiel.id,spiel.titel FROM spiel,spieler WHERE spiel.id=spieler.spielid GROUP BY spiel.id HAVING count(spieler.id)=4

      Wenn das allerdings mal so 100 oder 1000 Ergebnisse werden, sollen die nicht alle auf eine Seite ausgespuckt werden, sondern fein verteilt. Deshalb kommt da ein LIMIT ans Ende rein.
      Ich brauche aber für Berechnungen noch die Gesamtzahl an Ergebnissen.

      Kommentar


      • #4
        wenn dir das das richtige liefert, dann kannst du doch mit
        Code:
        SELECT COUNT(spiel.id) anzahl 
        FROM spiel,spieler 
        WHERE spiel.id=spieler.spielid 
        GROUP BY spiel.id 
        HAVING count(spieler.id)=4
        die anzahl auslesen
        oder du machst ein mysql_num_rows
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          count(spiel.id) oder count(irgendwas) liefert mir die Anzahl der Spieler in einem Spiel!
          und mysql_num_rows() gibt bei LIMIT 25 höchstens 25 aus.

          Kommentar


          • #6
            dann mach das LIMIT raus für mysql_num_rows
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              Dann habe ich ja wieder meine ursprüngliche Lösung, was das Zählen in der Anwendung wäre.
              Macht sich aber irgendwie ungünstig, wenn das größere Ergebnismengen werden... da werden n Haufen Daten sinnlos zwischen SQL-Server und Webserver transferiert.

              Kommentar


              • #8
                wenn du zwei unterschiedliche, von einander abhängige dinge zählen willst brauchst du subselects, die deine mysql-version nicht unterstützt

                du musst dann wohl oder übel zwei abfragen machen
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar

                Lädt...
                X