【问题标题】:how to get the second batch and 3rd batch in the same query result in oracle sql + yii framework?如何在 oracle sql + yii 框架中获得同一查询结果中的第二批和第三批?
【发布时间】:2012-10-25 23:51:39
【问题描述】:

假设我在 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;

【问题讨论】:

    标签: sql oracle yii


    【解决方案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;
    

    【讨论】:

    • 什么是“COciCommandBuiled applyLimit 使用它”?,我需要调整与架构有关的 yii 框架类吗?
    • @sasori,你不需要对获取下一个 4 的元素进行任何调整 - 只需设置 offset = 4; (第 3 - 偏移量 = 8 等)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-02
    • 2014-10-12
    • 1970-01-01
    • 2015-03-16
    • 1970-01-01
    • 2018-03-15
    相关资源
    最近更新 更多