- Timestamp:
- 2013/02/18 19:09:54 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_12-dev/data/class/db/dbfactory/SC_DB_DBFactory_MYSQL.php
r22206 r22567 33 33 * @version $Id:SC_DB_DBFactory_MYSQL.php 15267 2007-08-09 12:31:52Z nanasess $ 34 34 */ 35 class SC_DB_DBFactory_MYSQL extends SC_DB_DBFactory { 35 class SC_DB_DBFactory_MYSQL extends SC_DB_DBFactory 36 { 36 37 37 38 /** SC_Query インスタンス */ … … 44 45 * @return string データベースのバージョン 45 46 */ 46 function sfGetDBVersion($dsn = '') { 47 function sfGetDBVersion($dsn = '') 48 { 47 49 $objQuery =& SC_Query_Ex::getSingletonInstance($dsn); 48 50 $val = $objQuery->getOne('select version()'); … … 57 59 * @return string MySQL 用に置換した SQL 文 58 60 */ 59 function sfChangeMySQL($sql) { 61 function sfChangeMySQL($sql) 62 { 60 63 // 改行、タブを1スペースに変換 61 64 $sql = preg_replace("/[\r\n\t]/",' ',$sql); … … 76 79 * @return array 文字コード情報 77 80 */ 78 function getCharSet() { 81 function getCharSet() 82 { 79 83 $objQuery =& SC_Query_Ex::getSingletonInstance(); 80 84 $arrRet = $objQuery->getAll("SHOW VARIABLES LIKE 'char%'"); … … 88 92 * @return string 昨日の売上高・売上件数を算出する SQL 89 93 */ 90 function getOrderYesterdaySql($method) { 94 function getOrderYesterdaySql($method) 95 { 91 96 return 'SELECT ' . $method . '(total) FROM dtb_order ' 92 97 . 'WHERE del_flg = 0 ' … … 101 106 * @return string 当月の売上高・売上件数を算出する SQL 102 107 */ 103 function getOrderMonthSql($method) { 108 function getOrderMonthSql($method) 109 { 104 110 return 'SELECT '.$method.'(total) FROM dtb_order ' 105 111 . 'WHERE del_flg = 0 ' … … 114 120 * @return string 昨日のレビュー書き込み件数を算出する SQL 115 121 */ 116 function getReviewYesterdaySql() { 122 function getReviewYesterdaySql() 123 { 117 124 return 'SELECT COUNT(*) FROM dtb_review AS A ' 118 125 . 'LEFT JOIN dtb_products AS B ' … … 129 136 * @return string 検索条件の SQL 130 137 */ 131 function getSendHistoryWhereStartdateSql() { 138 function getSendHistoryWhereStartdateSql() 139 { 132 140 return 'start_date BETWEEN date_add(CURRENT_TIMESTAMP,INTERVAL -5 minute) AND date_add(CURRENT_TIMESTAMP,INTERVAL 5 minute)'; 133 141 } … … 139 147 * @return string 検索条件の SQL 140 148 */ 141 function getDownloadableDaysWhereSql($dtb_order_alias = 'dtb_order') { 149 function getDownloadableDaysWhereSql($dtb_order_alias = 'dtb_order') 150 { 142 151 return '(SELECT IF((SELECT d1.downloadable_days_unlimited FROM dtb_baseinfo d1)=1, 1, DATE(CURRENT_TIMESTAMP) <= DATE(DATE_ADD(' . $dtb_order_alias . '.payment_date, INTERVAL (SELECT downloadable_days FROM dtb_baseinfo) DAY))))'; 143 152 } … … 149 158 * @return string 検索条件のSQL 150 159 */ 151 function getOrderTotalDaysWhereSql($type) { 160 function getOrderTotalDaysWhereSql($type) 161 { 152 162 switch ($type) { 153 163 case 'month': … … 185 195 * @return string 年代抽出部分の SQL 186 196 */ 187 function getOrderTotalAgeColSql() { 197 function getOrderTotalAgeColSql() 198 { 188 199 return 'TRUNC((YEAR(create_date) - YEAR(order_birth)) - (RIGHT(create_date, 5) < RIGHT(order_birth, 5)), -1)'; 189 200 } … … 195 206 * @return string 連結後の SQL 文 196 207 */ 197 function concatColumn($columns) { 208 function concatColumn($columns) 209 { 198 210 $sql = 'concat('; 199 211 $i = 0; … … 218 230 * @return array テーブル名の配列 219 231 */ 220 function findTableNames($expression = '') { 232 function findTableNames($expression = '') 233 { 221 234 $objQuery =& SC_Query_Ex::getSingletonInstance(); 222 235 $sql = 'SHOW TABLES LIKE '. $objQuery->quote('%' . $expression . '%'); … … 233 246 * @return string 変換後の SQL 文 234 247 */ 235 function sfChangeILIKE($sql) { 248 function sfChangeILIKE($sql) 249 { 236 250 $changesql = preg_replace('/(^|[^\w])ILIKE([^\w]|$)/i', '$1LIKE$2', $sql); 237 251 return $changesql; … … 245 259 * @return string 変換後の SQL 文 246 260 */ 247 function sfChangeRANDOM($sql) { 261 function sfChangeRANDOM($sql) 262 { 248 263 $changesql = preg_replace('/(^|[^\w])RANDOM\(/i', '$1RAND(', $sql); 249 264 return $changesql; … … 257 272 * @return string 変換後の SQL 文 258 273 */ 259 function sfChangeTrunc($sql) { 274 function sfChangeTrunc($sql) 275 { 260 276 $changesql = preg_replace('/(^|[^\w])TRUNC([^\w]|$)/i', '$1TRUNCATE$2', $sql); 261 277 return $changesql; … … 269 285 * @return string 変換後の SQL 文 270 286 */ 271 function sfChangeArrayToString($sql) { 287 function sfChangeArrayToString($sql) 288 { 272 289 if (strpos(strtoupper($sql), 'ARRAY_TO_STRING') !== FALSE) { 273 290 preg_match_all('/ARRAY_TO_STRING.*?\(.*?ARRAY\(.*?SELECT (.+?) FROM (.+?) WHERE (.+?)\).*?\,.*?\'(.+?)\'.*?\)/is', $sql, $match, PREG_SET_ORDER); … … 290 307 * @return array インデックス設定情報配列 291 308 */ 292 function sfGetCreateIndexDefinition($table, $name, $definition) { 309 function sfGetCreateIndexDefinition($table, $name, $definition) 310 { 293 311 $objQuery =& SC_Query_Ex::getSingletonInstance(); 294 312 $arrTblInfo = $objQuery->getTableInfo($table); … … 310 328 * @return string 311 329 */ 312 function getDummyFromClauseSql() { 330 function getDummyFromClauseSql() 331 { 313 332 return 'FROM DUAL'; 314 333 } … … 320 339 * @return void 321 340 */ 322 function initObjQuery(SC_Query &$objQuery) { 341 function initObjQuery(SC_Query &$objQuery) 342 { 323 343 $objQuery->exec('SET SESSION storage_engine = InnoDB'); 324 344 $objQuery->exec("SET SESSION sql_mode = 'ANSI'");
Note: See TracChangeset
for help on using the changeset viewer.