2016-08-20 2 views
0

Ich versuche, Ergebnisse anzuzeigen, und zeige die Anzahl aller Ergebnisse, aber ich muss in 5 Ergebnisse auf paginate begrenzen. Wie kann ich es tun? Ich benutze diese Abfrage:Alle Ergebnisse anzeigen Mit Limit zählen?

<?php 
     $q = strtolower($_GET["CONTENT"]); 
     $count = 0; 
     $Read = new Read(); 
     $Read->FullRead("SELECT 
      CATEGORIES.CATEGORY_ID, 
      CATEGORIES.CATEGORY_COLOR, 
      LINKS.LINK_TITLE, 
      LINKS.LINK_ID, 
      LINKS.LINK_FRIENDLY_URL, 
      LINKS.LINK_CATEGORY, 
      LINKS.LINK_PHOTO, 
      LINKS.LINK_ID 
      FROM LINKS INNER JOIN CATEGORIES 
      ON 
      LINKS.LINK_CATEGORY = CATEGORIES.CATEGORY_ID 
      WHERE LINK_STATUS = 1 
      AND ROWNUM <= 5 
      AND regexp_like(LINKS.LINK_TITLE, '{$q}', 'i') ORDER BY LINK_DATE DESC"); 
     if ($Read->getResult()): 
      foreach ($Read->getResult() as $LINK): 
       extract($LINK); 
     $count++; 

endforeach; 
endif; 

echo $count; 
?> 

Vielen Dank!

Antwort

1

In Ihrer Abfrage wählen Sie nur fünf zufällige Zeilen (nicht buchstäblich zufällig, aber die ersten fünf in Oracle interne Buchhaltung, die nicht auf Ihre Bestellkriterien basiert). Denken Sie immer daran, dass die ORDER BY-Klausel in einer SQL-Anweisung nur verarbeitet wird nach alle anderen Klauseln sind bereits erfolgt, so dass Ihre ORDER BY keine Auswirkungen auf ROWNUM in derselben Abfrage haben wird. Zu der Zeit, als Sie zu ORDER BY gelangen, waren die Reihen bereits auf nur fünf begrenzt.

Um dies zu beheben, müssen Sie alles andere in einer Unterabfrage tun. Wählen Sie dann aus der Unterabfrage aus und fügen Sie WHERE ROWNUM <= 5 in der äußeren Abfrage hinzu, nicht in der Unterabfrage.

Verwandte Themen