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

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

File:
1 edited

Legend:

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

    r23256 r23378  
    213213    public function lfGetProductsList($searchCondition, $disp_number, $startno, &$objProduct) 
    214214    { 
     215        $objQuery =& SC_Query_Ex::getSingletonInstance(); 
     216 
    215217        $arrOrderVal = array(); 
    216218 
    217         $objQuery =& SC_Query_Ex::getSingletonInstance(); 
    218219        // 表示順序 
    219220        switch ($this->orderby) { 
     
    235236                    $dtb_product_categories = 'dtb_product_categories'; 
    236237                } 
    237                 $order = <<< __EOS__ 
    238                     ( 
    239                         SELECT 
    240                             T3.rank * 2147483648 + T2.rank 
    241                         FROM 
    242                             $dtb_product_categories T2 
    243                             JOIN dtb_category T3 
    244                               ON T2.category_id = T3.category_id 
    245                         WHERE T2.product_id = alldtl.product_id 
    246                         ORDER BY T3.rank DESC, T2.rank DESC 
    247                         LIMIT 1 
    248                     ) DESC 
    249                     ,product_id DESC 
    250 __EOS__; 
    251                 $objQuery->setOrder($order); 
     238                $col = 'T3.rank * 2147483648 + T2.rank'; 
     239                $from = "$dtb_product_categories T2 JOIN dtb_category T3 ON T2.category_id = T3.category_id"; 
     240                $where = 'T2.product_id = alldtl.product_id'; 
     241                $objQuery->setOrder('T3.rank DESC, T2.rank DESC'); 
     242                $objQuery->setLimit(1); 
     243                $sub_sql = $objQuery->getSqlWithLimitOffset($col, $from, $where); 
     244 
     245                $objQuery->setOrder("($sub_sql) DESC ,product_id DESC"); 
    252246                break; 
    253247        } 
Note: See TracChangeset for help on using the changeset viewer.