显示所有结果计数限制?

时间:2016-08-20 03:35:59

标签: php oracle

我正在尝试显示结果,并显示所有结果的数量,但我需要将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 个答案:

答案 0 :(得分:1)

在您的查询中,您只选择了五个随机行(不是字面上随机的,而是Oracle内部簿记中的前五个,而不是基于您的订购标准)。永远记住,SQL语句中的ORDER BY子句仅在处理完所有其他子句后处理,因此ORDER BYROWNUM无效在同一个查询中。当你到达ORDER BY时,行数已经只限于五行了。

要解决此问题,您需要在子查询中执行其他所有操作。然后从子查询中选择并在外部查询中添加WHERE ROWNUM <= 5,而不是在子查询中。