Ignore:
Timestamp:
2014/04/29 17:33:46 (6 years ago)
Author:
Seasoft
Message:

#2531 (DBMS に依存したサブクエリー内の LIMIT OFFSET を排除する)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_13-dev/data/class/pages/admin/LC_Page_Admin_Home.php

    r23124 r23378  
    251251        $objQuery =& SC_Query_Ex::getSingletonInstance(); 
    252252 
    253         $sql = <<< __EOS__ 
    254             SELECT 
    255                 ord.order_id, 
    256                 ord.customer_id, 
    257                 ord.order_name01 AS name01, 
    258                 ord.order_name02 AS name02, 
    259                 ord.total, 
    260                 ord.create_date, 
    261                 (SELECT 
    262                     det.product_name 
    263                 FROM 
    264                     dtb_order_detail AS det 
    265                 WHERE 
    266                     ord.order_id = det.order_id 
    267                 ORDER BY det.order_detail_id 
    268                 LIMIT 1 
    269                 ) AS product_name, 
    270                 (SELECT 
    271                     pay.payment_method 
    272                 FROM 
    273                     dtb_payment AS pay 
    274                 WHERE 
    275                     ord.payment_id = pay.payment_id 
    276                 ) AS payment_method 
    277             FROM ( 
    278                 SELECT 
    279                     order_id, 
    280                     customer_id, 
    281                     order_name01, 
    282                     order_name02, 
    283                     total, 
    284                     create_date, 
    285                     payment_id 
    286                 FROM 
    287                     dtb_order AS ord 
    288                 WHERE 
    289                     del_flg = 0 AND status <> ? 
    290                 ORDER BY 
    291                     create_date DESC LIMIT 10 OFFSET 0 
    292             ) AS ord 
     253        $objQuery->setOrder('order_detail_id'); 
     254        $objQuery->setLimit(1); 
     255        $sql_product_name = $objQuery->getSqlWithLimitOffset('product_name', 'dtb_order_detail', 'order_id = dtb_order.order_id'); 
     256 
     257        $cols = <<< __EOS__ 
     258            dtb_order.order_id, 
     259            dtb_order.customer_id, 
     260            dtb_order.order_name01 AS name01, 
     261            dtb_order.order_name02 AS name02, 
     262            dtb_order.total, 
     263            dtb_order.create_date, 
     264            ($sql_product_name) AS product_name, 
     265            (SELECT 
     266                pay.payment_method 
     267            FROM 
     268                dtb_payment AS pay 
     269            WHERE 
     270                dtb_order.payment_id = pay.payment_id 
     271            ) AS payment_method 
    293272__EOS__; 
    294         $arrNewOrder = $objQuery->getAll($sql, ORDER_CANCEL); 
     273        $from = 'dtb_order'; 
     274        $where = 'del_flg = 0 AND status <> ?'; 
     275        $objQuery->setOrder('create_date DESC'); 
     276        $objQuery->setLimit(10); 
     277        $arrNewOrder = $objQuery->select($cols, $from, $where, ORDER_CANCEL); 
     278 
    295279        foreach ($arrNewOrder as $key => $val) { 
    296280            $arrNewOrder[$key]['create_date'] = str_replace('-', '/', substr($val['create_date'], 0,19)); 
Note: See TracChangeset for help on using the changeset viewer.