Ignore:
Timestamp:
2010/11/09 18:00:25 (16 years ago)
Author:
nanasess
bzr:base-revision:
[email protected]
bzr:committer:
Kentaro Ohkouchi <[email protected]>
bzr:file-ids:

data/Smarty/templates/admin/system/editdb.tpl 19117@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Fcamp%2Fcamp-2_5-D%2Fdata%2FSmarty%2Ftemplates%2Fadmin%2Fsystem%2Feditdb.tpl
data/Smarty/templates/admin/system/subnavi.tpl 15732@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2FSmarty%2Ftemplates%2Fdefault%2Fadmin%2Fsystem%2Fsubnavi.tpl
data/class/SC_Initial.php 16506@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2FSC_Initial.php
data/class/SC_Product.php 18277@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Fcomu-ver2%2Fdata%2Fclass%2FSC_Product.php
data/class/SC_Query.php 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2FSC_Query.php
data/class/helper/SC_Helper_DB.php 15176@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fhelper%2FSC_Helper_DB.php
data/class/helper/SC_Helper_Session.php 15277@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fhelper%2FSC_Helper_Session.php
data/class/pages/LC_Page.php 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2FLC_Page.php
data/class/pages/admin/order/LC_Page_Admin_Order_ProductSelect.php 17293@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Fcomu-ver2%2Fdata%2Fclass%2Fpages%2Fadmin%2Forder%2FLC_Page_Admin_Order_ProductSelect.php
data/class/pages/admin/system/LC_Page_Admin_System_Editdb.php 19117@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Fcamp%2Fcamp-2_5-D%2Fdata%2Fclass%2Fpages%2Fadmin%2Fsystem%2FLC_Page_Admin_System_Editdb.php
data/class/pages/products/LC_Page_Products_List.php 15154@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fproducts%2FLC_Page_Products_List.php
data/class_extends/page_extends/admin/system/LC_Page_Admin_System_Editdb_Ex.php 19117@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Fcamp%2Fcamp-2_5-D%2Fdata%2Fclass_extends%2Fpage_extends%2Fadmin%2Fsystem%2FLC_Page_Admin_System_Editdb_Ex.php
html/admin/system/editdb.php 19180@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Fcamp%2Fcamp-2_5-D%2Fhtml%2Fadmin%2Fsystem%2Feditdb.php
html/install/sql/column_comment.sql 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fhtml%2Finstall%2Fsql%2Fcolumn_comment.sql
html/install/sql/create_table_mysql.sql 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fhtml%2Finstall%2Fsql%2Fcreate_table_mysql.sql
html/install/sql/create_table_pgsql.sql 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fhtml%2Finstall%2Fsql%2Fcreate_table_pgsql.sql
html/install/sql/drop_table.sql 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fhtml%2Finstall%2Fsql%2Fdrop_table.sql
html/install/sql/insert_data.sql 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fhtml%2Finstall%2Fsql%2Finsert_data.sql
bzr:mapping-version:
v4
bzr:repository-uuid:
1e3b908f-19a9-db11-a64c-001125224ba8
bzr:revision-id:
[email protected]
bzr:revno:
2392
bzr:revprop:branch-nick:
branches/version-2_5-dev
bzr:root:
branches/version-2_5-dev
bzr:timestamp:
2010-11-09 18:00:16.530999899 +0900
bzr:user-agent:
bzr2.2.0+bzr-svn1.0.3
svn:original-date:
2010-11-09T09:00:16.531000Z
Message:

source:branches/camp/camp-2_5-D のマージ

  • sfCategory_Countの高速化(規格のデータベースを木構造に #781)
  • IN句が長くなり正常に動かない問題を修正(規格のデータベースを木構造に #781)
  • インデックス管理機能(#848)
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_5-dev/data/class/SC_Product.php

    r18882 r19662  
    4646    var $classCat2_find; 
    4747    var $classCats1; 
    48  
    49     /** 
    50      * SC_Queryインスタンスに設定された検索条件をもとに商品IDの配列を取得する. 
     48    /** 検索用並び替え条件配列 */ 
     49    var $arrOrderData; 
     50     
     51    /** 
     52     * 商品検索結果の並び順を指定する。 
     53     * 
     54     * ただし指定できるテーブルはproduct_idを持っているテーブルであることが必要. 
     55     * 
     56     * @param string $col 並び替えの基準とするフィールド 
     57     * @param string $table 並び替えの基準とするフィールドがあるテーブル 
     58     * @param string $order 並び替えの順序 ASC / DESC 
     59     * @return void 
     60     */ 
     61    function setProductsOrder($col, $table = 'dtb_products', $order = 'ASC') { 
     62        $this->arrOrderData = array('col' => $col, 'table' => $table, 'order' => $order); 
     63    } 
     64 
     65    /** 
     66     * SC_Queryインスタンスに設定された検索条件を元に並び替え済みの検索結果商品IDの配列を取得する。 
    5167     * 
    5268     * 検索条件は, SC_Query::getWhere() 関数で設定しておく必要があります. 
     
    5672     * @return array 商品IDの配列 
    5773     */ 
    58     function findProductIds(&$objQuery, $arrVal = array()) { 
     74    function findProductIdsOrder(&$objQuery, $arrVal = array(), $where) { 
     75        $table = <<< __EOS__ 
     76                 dtb_products AS alldtl 
     77            JOIN dtb_products_class AS T1 
     78              ON alldtl.product_id = T1.product_id 
     79            JOIN dtb_product_categories AS T2 
     80              ON alldtl.product_id = T2.product_id 
     81            JOIN dtb_category 
     82              ON T2.category_id = dtb_category.category_id 
     83__EOS__; 
     84        $objQuery->setGroupBy('alldtl.product_id'); 
     85        if(is_array($this->arrOrderData) and $objQuery->order == ""){ 
     86            $o_col = $this->arrOrderData['col']; 
     87            $o_table = $this->arrOrderData['table']; 
     88            $o_order = $this->arrOrderData['order']; 
     89            $order = <<< __EOS__ 
     90                    ( 
     91                        SELECT $o_col 
     92                        FROM 
     93                            $o_table as T2 
     94                        WHERE T2.product_id = alldtl.product_id 
     95                        ORDER BY T2.$o_col $o_order 
     96                        LIMIT 1 
     97                    ) $o_order, product_id 
     98__EOS__; 
     99            $objQuery->setOrder($order); 
     100        } 
     101        $results = $objQuery->select('alldtl.product_id', $table, "", $arrVal, 
     102                                     MDB2_FETCHMODE_ORDERED); 
     103        foreach ($results as $val) { 
     104            $resultValues[] = $val[0]; 
     105        } 
     106        return $resultValues; 
     107    } 
     108 
     109    /** 
     110     * SC_Queryインスタンスに設定された検索条件をもとに対象商品数を取得する. 
     111     * 
     112     * 検索条件は, SC_Query::getWhere() 関数で設定しておく必要があります. 
     113     * 
     114     * @param SC_Query $objQuery SC_Query インスタンス 
     115     * @param array $arrVal 検索パラメータの配列 
     116     * @return array 対象商品ID数 
     117     */ 
     118    function findProductCount(&$objQuery, $arrVal = array()) { 
    59119        $table = <<< __EOS__ 
    60120                 dtb_products AS alldtl 
     
    64124              ON T2.category_id = dtb_category.category_id 
    65125__EOS__; 
    66         // SC_Query::getCol() ではパフォーマンスが出ない 
    67         $results = $objQuery->select('alldtl.product_id', $table, "", $arrVal, 
    68                                      MDB2_FETCHMODE_ORDERED); 
    69         foreach ($results as $val) { 
    70             $resultValues[] = $val[0]; 
    71         } 
    72         return array_unique($resultValues); 
     126        $objQuery->setGroupBy('alldtl.product_id'); 
     127        $sql_base = $objQuery->getSql('alldtl.product_id',$table); 
     128        return $objQuery->getOne( "SELECT count(*) FROM ( $sql_base ) as t" , $arrVal); 
    73129    } 
    74130 
     
    109165            ,update_date 
    110166__EOS__; 
    111         return $objQuery->select($col, $this->alldtlSQL($objQuery->where), 
     167        $res = $objQuery->select($col, $this->alldtlSQL($objQuery->where), 
    112168                                 "", $arrVal); 
     169        return $res; 
    113170    } 
    114171 
Note: See TracChangeset for help on using the changeset viewer.