Rainer: MySQL Gesamtzahl Datensätze trotz Limit

Moin allerseits,

folgende Query will nicht:

SELECT SQL_CALC_FOUND_ROWS ID,kurzbezeichnung,ansprechpartner_email FROM tabelle ORDER BY ID LIMIT 0,20 UNION SELECT FOUND_ROWS()

MySQL Version 5.1.63

Woran könnte das liegen bzw. was ist falsch? Gibt es eine bessere Variante die Gesamtzahl trotz Limit zu ermitteln als diese (noch nicht funtionierende) oder einer zusätzlichen Abfrage?

Gruß Rainer

  1. Tach!

    folgende Query will nicht:
    SELECT SQL_CALC_FOUND_ROWS ID,kurzbezeichnung,ansprechpartner_email FROM tabelle ORDER BY ID LIMIT 0,20 UNION SELECT FOUND_ROWS()
    Woran könnte das liegen bzw. was ist falsch?

    Welche konkreten Fragen bleiben denn noch nach der Lektüre der Funktionsbeschreibung offen?

    Gibt es eine bessere Variante die Gesamtzahl trotz Limit zu ermitteln als diese (noch nicht funtionierende) oder einer zusätzlichen Abfrage?

    Nicht ohne Stored Procedure oder das umständliche Handling einer Multi-Query.

    dedlfix.

    1. Hallo,

      Welche konkreten Fragen bleiben denn noch nach der Lektüre der Funktionsbeschreibung offen?

      alles, weil ich es nicht kapiere... Und dabei ist heute nicht mal Montag.

      Gruß Rainer

      1. Tach!

        Welche konkreten Fragen bleiben denn noch nach der Lektüre der Funktionsbeschreibung offen?
        alles, weil ich es nicht kapiere... Und dabei ist heute nicht mal Montag.

        SQL_CALC_FOUND_ROWS bezieht sich auf die komplette Query inklusive aller UNIONS und FOUND_ROWS() weiß erst danach die Antwort. Dein Ziel ist also nicht mit UNION/einer einzigen Query erreichbar.

        dedlfix.

  2. Hi,

    SELECT SQL_CALC_FOUND_ROWS ID,kurzbezeichnung,ansprechpartner_email FROM tabelle ORDER BY ID LIMIT 0,20 UNION SELECT FOUND_ROWS()

    Das ist kein gültiges SQL, da bei einem UNION die Spalten der beteiligten SELECT-Statements gleich sein müssen.
    Stell dir vor, die beiden Abfragen getrennt voneinander zu stellen und die Ergebnisse aneinanderzuhängen (UNION ALL) bzw. es werden gleiche Zeilen zusammengefasst (UNION/UNION DISTINCT).

    Bis die Tage,
    Matti

  3. hi Rainer,

    Du möchtest doch nur wissen, ob es _mehr_ Records gibt, als in Deinem Level vorgegeben?

    Trick: Setze den zweiten Limit-Parameter um eins höher ;)

    Hotti

    1. Hi,

      Du möchtest doch nur wissen, ob es _mehr_ Records gibt, als in Deinem Level vorgegeben?

      Nein, möchte er nicht – im Titel ist nach der Gesamtzahl gefragt.

      Trick: Setze den zweiten Limit-Parameter um eins höher ;)

      Trick: Lesen lernen.

      MfG ChrisB

      --
      RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
  4. Gibt es eine bessere Variante die Gesamtzahl trotz Limit zu ermitteln als diese (noch nicht funtionierende) oder einer zusätzlichen Abfrage?

    Besser ist immer relativ. Wenn sich die Datensätze in Grenzen halten, kannst du alle auslesen und dann in der abfragenden Software das Ergebniss passend beschneiden. Wenn du z.B. ein Array zurückbekommst, ermittelst du die Anzahl der Datensätze und löscht dann alle Datensätze ausdem Array, die du nicht brauchst.