【问题标题】:DB2 SQL Pagination with a variable BETWEEN带有变量 BETWEEN 的 DB2 SQL 分页
【发布时间】:2015-09-10 18:37:53
【问题描述】:

所以,我必须使用 DB2 对站点数据库进行分页,每页显示 10 个结果。但是,当我使用FETCH FIRST 10 ROWS ONLY 时,所有页面都显示相同的 10 个第一个结果。我搜索并认为我必须将BETWEEN 0 AND 9 与范围变量一起使用,但无论我做什么,我似乎都无法正确获取 SQL 代码。我总是收到错误消息odbc_fetch_row(): supplied argument is not a valid ODBC result resource

我为偏移量创建了变量:

//offset for the query
$limit = 10;
$offset = ($currentpage - 1)  * $limit;
$start = $offset + 1;
$end = min(($offset + $limit), $total);
$offsetend = $end - 1;

并从数据库中获取信息:

$busca="";
    if(isset($_GET['palavra']))
    {
        $busca=($_GET['palavra']);
    }
    $SQL1 = "SELECT PALAVRA.CODPAL, PALAVRA.NMPAL, PALAVRA.NMLIBTRANS 
    FROM (SELECT ROW_NUMBER() OVER (ORDER BY PALAVRA.NMPAL ASC) AS ROWNUM
    FROM MAXADM.PALAVRA WHERE PALAVRA.NMPAL LIKE '$busca%') AS P 
    WHERE P.ROWNUM BETWEEN $offset AND $offsetend";

    $rs1=getInfo($SQL1);
    while(odbc_fetch_row($rs1))
    {
    $cod_palavra = odbc_result($rs1,"CODPAL");
    $palavra = odbc_result($rs1,"NMPAL");
    $librastrans = odbc_result($rs1,"NMLIBTRANS");
    }

我做错了什么?非常感谢!

【问题讨论】:

    标签: php sql pagination db2 between


    【解决方案1】:

    按照目前的编写,关联名称为P 的子选择仅包含一列ROWNUM

    SELECT PALAVRA.CODPAL, PALAVRA.NMPAL, PALAVRA.NMLIBTRANS 
    FROM (
      SELECT ROW_NUMBER() OVER (ORDER BY PALAVRA.NMPAL ASC) AS ROWNUM
        FROM MAXADM.PALAVRA WHERE PALAVRA.NMPAL LIKE '$busca%'
    ) AS P 
    WHERE P.ROWNUM BETWEEN $offset AND $offsetend
    

    所以你显然不能从中选择PALAVRA.CODPAL, PALAVRA.NMPAL, PALAVRA.NMLIBTRANS

    尝试将查询重写为

    SELECT P.CODPAL, P.NMPAL, P.NMLIBTRANS 
    FROM (
      SELECT 
        PALAVRA.CODPAL, PALAVRA.NMPAL, PALAVRA.NMLIBTRANS,
        ROW_NUMBER() OVER (ORDER BY PALAVRA.NMPAL ASC) AS ROWNUM
      FROM MAXADM.PALAVRA WHERE PALAVRA.NMPAL LIKE '$busca%'
    ) AS P 
    WHERE P.ROWNUM BETWEEN $offset AND $offsetend
    

    【讨论】:

      猜你喜欢
      • 2012-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-12
      • 1970-01-01
      • 2012-12-11
      • 1970-01-01
      • 2020-10-03
      相关资源
      最近更新 更多