如何在oracle sql + yii框架中获得同一查询结果中的第二批和第三批?

时间:2012-11-06 03:46:20

标签: sql oracle yii

让我说我在sql查询中有20个结果。如果我要在yii活动记录中使用限制,我显然会从结果中得到前四个,但是如果我想在相同的查询结果中得到第二个四个然后第三个四个怎么办?如何通过sql查询?

例如

        $criteria2 = new CDbCriteria();
        $criteria2->select = 'USERID, ADID ,ADTYPE, ADTITLE, ADDESC, PAGEVIEW, DISPPUBLISHDATE';
        $criteria2->addCondition("STATUS = 1");
        $criteria2->order = '"t".PAGEVIEW DESC,"t".PUBLISHDATE DESC';
        $criteria2->limit = 4;
        $criteria2->with = array('subcat','adimages');
        $result = $this->findAll($criteria2);
        return $result;

1 个答案:

答案 0 :(得分:1)

抱歉:)

请看这里,如何与Oracle分页(你是否使用11g?) Alternatives to LIMIT and OFFSET for paging in Oracle

好吧,在Yii中设置偏移量,OCIConnector会自动为sql设置rownum

    $criteria2 = new CDbCriteria();
    $criteria2->select = 'USERID, ADID ,ADTYPE, ADTITLE, ADDESC, PAGEVIEW, DISPPUBLISHDATE';
    $criteria2->addCondition("STATUS = 1");
    $criteria2->order = '"t".PAGEVIEW DESC,"t".PUBLISHDATE DESC';
    $criteria2->limit = 4;
    $criteria2->offset = 0; //4, 8 - COciCommandBuiled applyLimit use it
    $criteria2->with = array('subcat','adimages');
    $result = $this->findAll($criteria2);
    return $result;