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/api/operations/ItemSearch.php

    r23124 r23378  
    114114    protected function getProductsList($searchCondition, $disp_number, $startno, $linemax, &$objProduct) 
    115115    { 
     116        $objQuery =& SC_Query_Ex::getSingletonInstance(); 
     117 
    116118        $arrOrderVal = array(); 
    117119 
    118         $objQuery =& SC_Query_Ex::getSingletonInstance(); 
    119120        // 表示順序 
    120121        switch ($searchCondition['orderby']) { 
     
    147148                    $dtb_product_categories = 'dtb_product_categories'; 
    148149                } 
    149                 $order = <<< __EOS__ 
    150                     ( 
    151                         SELECT 
    152                             T3.rank * 2147483648 + T2.rank 
    153                         FROM 
    154                             $dtb_product_categories T2 
    155                             JOIN dtb_category T3 
    156                               ON T2.category_id = T3.category_id 
    157                         WHERE T2.product_id = alldtl.product_id 
    158                         ORDER BY T3.rank DESC, T2.rank DESC 
    159                         LIMIT 1 
    160                     ) DESC 
    161                     ,product_id DESC 
    162 __EOS__; 
    163                     $objQuery->setOrder($order); 
     150                $col = 'T3.rank * 2147483648 + T2.rank'; 
     151                $from = "$dtb_product_categories T2 JOIN dtb_category T3 ON T2.category_id = T3.category_id"; 
     152                $where = 'T2.product_id = alldtl.product_id'; 
     153                $objQuery->setOrder('T3.rank DESC, T2.rank DESC'); 
     154                $objQuery->setLimit(1); 
     155                $sub_sql = $objQuery->getSqlWithLimitOffset($col, $from, $where); 
     156 
     157                $objQuery->setOrder("($sub_sql) DESC ,product_id DESC"); 
    164158                break; 
    165159        } 
Note: See TracChangeset for help on using the changeset viewer.