2016-08-20 5 views
0

私は結果を表示しようとしており、すべての結果の数を表示しようとしていますが、ページ付けするには5つの結果に制限する必要があります。私はそれをどのようにすることができますか?私は次のクエリを使用します:すべての結果を制限付きで表示しますか?

<?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; 
?> 

ありがとう!

答えて

1

クエリでは、ランダム行(文字通りランダムではありませんが、注文基準に基づかないOracleの内部簿記の最初の5行)のみを選択しています。の後には、ORDER BY句が処理されるのは、です。したがって、ORDER BYは同じクエリ内のROWNUMには影響しません。 ORDER BYになる頃には、行はすでにわずか5個に制限されていました。

これを修正するには、サブクエリ内の他のすべてを行う必要があります。サブクエリから選択し、サブクエリではなく外部クエリにWHERE ROWNUM <= 5を追加します。

関連する問題