AllesMeins: MySQL: Suchergebnisse zählen

Hiho,

ich habe eine einfache Volltextsuche mit der MATCH ... AGAINST Syntax von MySQl realisiert. Nun würde ich noch gerne wissen wieviele Suchergebnisse es insgesamt gibt. Da ich pro Seite nur 10 Ergebnisse ausgeben will bringt mir das mysql_num_rows() aus PHP nichts, ich muss es also direkt in der Datenbank lösen. Ich vermute mal, das es mit COUNT(*) gemacht werden muss. Nur erfordert dies ja ein GROUP BY und ich habe keine Ahnung wie ich nach "MATCH AGAINST ist ungleich 0" gruppiere. Denn das müsste ja mein Gruppierungskriterium sein, wenn ich das richtig verstanden habe. mein derzeitiger Query sieht so aus:

SELECT count(*) as gesamt, header FROM index WHERE MATCH (header) AGAINST ('Suchbegriff') AND art = 'seite' GROUP BY ??? LIMIT 0,10

Was muss ich als Gruppierung verwenden?

Grüsse

Marc

  1. Hello,

    SELECT count(*) as gesamt, header FROM index WHERE MATCH (header) AGAINST ('Suchbegriff') AND art = 'seite' GROUP BY ??? LIMIT 0,10

    SELECT count(*) as gesamt FROM index WHERE MATCH (header) AGAINST ('Suchbegriff') AND art = 'seite'

    Wieso verwendest Du beim Count das Limit?

    Harzliche Grüße vom Berg
    esst mehr http://www.harte-harzer.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
  2. echo $begrüßung;

    ich habe eine einfache Volltextsuche mit der MATCH ... AGAINST Syntax von MySQl realisiert. Nun würde ich noch gerne wissen wieviele Suchergebnisse es insgesamt gibt. Da ich pro Seite nur 10 Ergebnisse ausgeben will ...

    Ganz anders und viel einfacher:

    SELECT SQL_CALC_FOUND_ROWS spalten FROM ...  LIMIT x,y

    und dann noch ein

    SELECT FOUND_ROWS()

    hinterher liefert die Anzahl der Ergebnisse, die es ohne LIMIT wär.

    Geht ab MySQL 4.0.0

    echo "$verabschiedung $name";