Changeset 20129 for branches/version-2_5-dev/data/class/db/dbfactory
- Timestamp:
- 2011/02/10 15:30:51 (13 years ago)
- Location:
- branches/version-2_5-dev/data/class/db/dbfactory
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_5-dev/data/class/db/dbfactory/SC_DB_DBFactory_MYSQL.php
r20116 r20129 148 148 } 149 149 150 151 /** 152 * 売上集計の期間別集計のSQLを返す 153 * 154 * @param mixed $type 155 * @return string 検索条件のSQL 156 */ 157 function getOrderTotalDaysWhereSql($type) { 158 switch($type){ 159 case 'month': 160 $format = '%m'; 161 break; 162 case 'year': 163 $format = '%Y'; 164 break; 165 case 'wday': 166 $format = '%a'; 167 break; 168 case 'hour': 169 $format = '%H'; 170 break; 171 default: 172 $format = '%Y-%m-%d'; 173 break; 174 } 175 176 return " date_format(create_date, '".$format."') AS str_date, 177 COUNT(order_id) AS total_order, 178 SUM(CASE WHEN order_sex = 1 THEN 1 ELSE 0 END) AS men, 179 SUM(CASE WHEN order_sex = 2 THEN 1 ELSE 0 END) AS women, 180 SUM(CASE WHEN customer_id <> 0 AND order_sex = 1 THEN 1 ELSE 0 END) AS men_member, 181 SUM(CASE WHEN customer_id <> 0 AND order_sex = 2 THEN 1 ELSE 0 END) AS women_member, 182 SUM(CASE WHEN customer_id = 0 AND order_sex = 1 THEN 1 ELSE 0 END) AS men_nonmember, 183 SUM(CASE WHEN customer_id = 0 AND order_sex = 2 THEN 1 ELSE 0 END) AS women_nonmember, 184 SUM(total) AS total, 185 AVG(total) AS total_average"; 186 } 187 188 150 189 /** 151 190 * 文字列連結を行う. … … 278 317 return $changesql; 279 318 } 280 319 281 320 /** 282 321 * ARRAY_TO_STRING(ARRAY(A),B) を GROUP_CONCAT() に変換する. … … 289 328 if(strpos(strtoupper($sql), 'ARRAY_TO_STRING') !== FALSE) { 290 329 preg_match_all('/ARRAY_TO_STRING.*?\(.*?ARRAY\(.*?SELECT (.+?) FROM (.+?) WHERE (.+?)\).*?\,.*?\'(.+?)\'.*?\)/is', $sql, $match, PREG_SET_ORDER); 291 330 292 331 foreach($match as $item) { 293 332 $replace = 'GROUP_CONCAT(' . $item[1] . ' SEPARATOR \'' . $item[4] . '\') FROM ' . $item[2] . ' WHERE ' . $item[3]; … … 297 336 return $sql; 298 337 } 299 338 300 339 /** 301 340 * WHERE 句置換用の配列を返す. … … 434 473 435 474 } 436 475 437 476 /** 438 477 * インデックス作成の追加定義を取得する -
branches/version-2_5-dev/data/class/db/dbfactory/SC_DB_DBFactory_PGSQL.php
r20116 r20129 129 129 return "(SELECT CASE WHEN (SELECT d1.downloadable_days_unlimited FROM dtb_baseinfo d1) = 1 AND o.payment_date IS NOT NULL THEN 1 WHEN DATE(NOW()) <= DATE(o.payment_date + '". $downloadable_days ." days') THEN 1 ELSE 0 END)"; 130 130 } 131 132 /** 133 * 売上集計の期間別集計のSQLを返す 134 * 135 * @param mixed $type 136 * @return string 検索条件のSQL 137 */ 138 function getOrderTotalDaysWhereSql($type) { 139 switch($type){ 140 case 'month': 141 $format = 'MM'; 142 break; 143 case 'year': 144 $format = 'YYYY'; 145 break; 146 case 'wday': 147 $format = 'Dy'; 148 break; 149 case 'hour': 150 $format = 'HH24'; 151 break; 152 default: 153 $format = 'YYYY-MM-DD'; 154 break; 155 } 156 157 return "to_char(create_date, '".$format."') AS str_date, 158 COUNT(order_id) AS total_order, 159 SUM(CASE WHEN order_sex = 1 THEN 1 ELSE 0 END) AS men, 160 SUM(CASE WHEN order_sex = 2 THEN 1 ELSE 0 END) AS women, 161 SUM(CASE WHEN customer_id <> 0 AND order_sex = 1 THEN 1 ELSE 0 END) AS men_member, 162 SUM(CASE WHEN customer_id <> 0 AND order_sex = 2 THEN 1 ELSE 0 END) AS women_member, 163 SUM(CASE WHEN customer_id = 0 AND order_sex = 1 THEN 1 ELSE 0 END) AS men_nonmember, 164 SUM(CASE WHEN customer_id = 0 AND order_sex = 2 THEN 1 ELSE 0 END) AS women_nonmember, 165 SUM(total) AS total, 166 AVG(total) AS total_average"; 167 } 168 131 169 132 170 /**
Note: See TracChangeset
for help on using the changeset viewer.