mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-04-18 18:02:15 +09:00
#19475181 executeQuery, executeQueryArray 시 DB Table 컬럼을 지정할 수 있도록 개선
git-svn-id: http://xe-core.googlecode.com/svn/sandbox@8032 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
parent
2984614918
commit
a3c46a1fcc
10 changed files with 507 additions and 340 deletions
|
|
@ -243,7 +243,7 @@
|
|||
* @return result of query
|
||||
* @remarks this function finds xml file or cache file of $query_id, compiles it and then execute it
|
||||
**/
|
||||
function executeQuery($query_id, $args = NULL) {
|
||||
function executeQuery($query_id, $args = NULL, $arg_columns = NULL) {
|
||||
if(!$query_id) return new Object(-1, 'msg_invalid_queryid');
|
||||
$this->query_id = $query_id;
|
||||
|
||||
|
|
@ -267,7 +267,7 @@
|
|||
$cache_file = $this->checkQueryCacheFile($query_id, $xml_file);
|
||||
|
||||
// execute query
|
||||
return $this->_executeQuery($cache_file, $args, $query_id);
|
||||
return $this->_executeQuery($cache_file, $args, $query_id, $arg_columns);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -303,7 +303,7 @@
|
|||
* @param[in] $query_id query id
|
||||
* @return result of query
|
||||
**/
|
||||
function _executeQuery($cache_file, $source_args, $query_id) {
|
||||
function _executeQuery($cache_file, $source_args, $query_id, $arg_columns) {
|
||||
global $lang;
|
||||
|
||||
if(!file_exists($cache_file)) return new Object(-1, 'msg_invalid_queryid');
|
||||
|
|
@ -314,7 +314,7 @@
|
|||
|
||||
if( (is_a($output, 'Object') || is_subclass_of($output, 'Object')) && !$output->toBool()) return $output;
|
||||
$output->_tables = ($output->_tables && is_array($output->_tables)) ? $output->_tables : array();
|
||||
|
||||
|
||||
// execute appropriate query
|
||||
switch($output->action) {
|
||||
case 'insert' :
|
||||
|
|
@ -330,9 +330,11 @@
|
|||
$output = $this->_executeDeleteAct($output);
|
||||
break;
|
||||
case 'select' :
|
||||
$output->arg_columns = is_array($arg_columns)?$arg_columns:array();
|
||||
$output = $this->_executeSelectAct($output);
|
||||
break;
|
||||
}
|
||||
|
||||
if($this->isError()) $output = $this->getError();
|
||||
else if(!is_a($output, 'Object') && !is_subclass_of($output, 'Object')) $output = new Object();
|
||||
$output->add('_query', $this->query);
|
||||
|
|
|
|||
|
|
@ -826,89 +826,90 @@
|
|||
}
|
||||
}
|
||||
|
||||
if (!$output->columns) {
|
||||
$columns = '*';
|
||||
}
|
||||
else {
|
||||
$column_list = array ();
|
||||
foreach ($output->columns as $key => $val) {
|
||||
$name = $val['name'];
|
||||
if(!$output->columns) $output->columns = array('*');
|
||||
|
||||
$click_count = '%s';
|
||||
if ($val['click_count'] && count ($output->conditions) > 0) {
|
||||
$click_count = 'incr(%s)';
|
||||
}
|
||||
$column_list = array ();
|
||||
foreach ($output->columns as $key => $val) {
|
||||
$name = $val['name'];
|
||||
|
||||
$alias = $val['alias'] ? sprintf ('"%s"', $val['alias']) : null;
|
||||
$click_count = '%s';
|
||||
if ($val['click_count'] && count ($output->conditions) > 0) {
|
||||
$click_count = 'incr(%s)';
|
||||
}
|
||||
|
||||
if ($name == '*') {
|
||||
$column_list[] = $name;
|
||||
}
|
||||
elseif (strpos ($name, '.') === false && strpos ($name, '(') === false) {
|
||||
$name = sprintf ($click_count,$name);
|
||||
if ($alias) {
|
||||
$column_list[] = sprintf('"%s" as %s', $name, $alias);
|
||||
}
|
||||
else {
|
||||
$column_list[] = sprintf ('"%s"', $name);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (strpos ($name, '.') != false) {
|
||||
list ($prefix, $name) = explode('.', $name);
|
||||
if (($now_matchs = preg_match_all ("/\(/", $prefix, $xtmp)) > 0) {
|
||||
if ($now_matchs == 1) {
|
||||
$tmpval = explode ("(", $prefix);
|
||||
$tmpval[1] = sprintf ('"%s"', $tmpval[1]);
|
||||
$prefix = implode ("(", $tmpval);
|
||||
$tmpval = explode (")", $name);
|
||||
$tmpval[0] = sprintf ('"%s"', $tmpval[0]);
|
||||
$name = implode (")", $tmpval);
|
||||
}
|
||||
}
|
||||
else {
|
||||
$prefix = sprintf ('"%s"', $prefix);
|
||||
$name = ($name == '*') ? $name : sprintf('"%s"',$name);
|
||||
}
|
||||
$xtmp = null;
|
||||
$now_matchs = null;
|
||||
$column_list[] = sprintf ($click_count, sprintf ('%s.%s', $prefix, $name)) . ($alias ? sprintf (' as %s',$alias) : '');
|
||||
}
|
||||
elseif (($now_matchs = preg_match_all ("/\(/", $name, $xtmp)) > 0) {
|
||||
if ($now_matchs == 1 && preg_match ("/[a-zA-Z0-9]*\(\*\)/", $name) < 1) {
|
||||
$open_pos = strpos ($name, "(");
|
||||
$close_pos = strpos ($name, ")");
|
||||
$alias = $val['alias'] ? sprintf ('"%s"', $val['alias']) : null;
|
||||
|
||||
if (preg_match ("/,/", $name)) {
|
||||
$tmp_func_name = sprintf ('%s', substr ($name, 0, $open_pos));
|
||||
$tmp_params = sprintf ('%s', substr ($name, $open_pos + 1, $close_pos - $open_pos - 1));
|
||||
$tmpval = null;
|
||||
$tmpval = explode (',', $tmp_params);
|
||||
if ($name == '*') {
|
||||
$column_list[] = $name;
|
||||
}
|
||||
elseif (strpos ($name, '.') === false && strpos ($name, '(') === false) {
|
||||
$name = sprintf ($click_count,$name);
|
||||
if ($alias) {
|
||||
$column_list[$alias] = sprintf('"%s" as %s', $name, $alias);
|
||||
}
|
||||
else {
|
||||
$column_list[] = sprintf ('"%s"', $name);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (strpos ($name, '.') != false) {
|
||||
list ($prefix, $name) = explode('.', $name);
|
||||
if (($now_matchs = preg_match_all ("/\(/", $prefix, $xtmp)) > 0) {
|
||||
if ($now_matchs == 1) {
|
||||
$tmpval = explode ("(", $prefix);
|
||||
$tmpval[1] = sprintf ('"%s"', $tmpval[1]);
|
||||
$prefix = implode ("(", $tmpval);
|
||||
$tmpval = explode (")", $name);
|
||||
$tmpval[0] = sprintf ('"%s"', $tmpval[0]);
|
||||
$name = implode (")", $tmpval);
|
||||
}
|
||||
}
|
||||
else {
|
||||
$prefix = sprintf ('"%s"', $prefix);
|
||||
$name = ($name == '*') ? $name : sprintf('"%s"',$name);
|
||||
}
|
||||
$xtmp = null;
|
||||
$now_matchs = null;
|
||||
if($alias) $column_list[$val['alias]']] = sprintf ($click_count, sprintf ('%s.%s', $prefix, $name)) . ($alias ? sprintf (' as %s',$alias) : '');
|
||||
else $column_list[] = sprintf ($click_count, sprintf ('%s.%s', $prefix, $name));
|
||||
}
|
||||
elseif (($now_matchs = preg_match_all ("/\(/", $name, $xtmp)) > 0) {
|
||||
if ($now_matchs == 1 && preg_match ("/[a-zA-Z0-9]*\(\*\)/", $name) < 1) {
|
||||
$open_pos = strpos ($name, "(");
|
||||
$close_pos = strpos ($name, ")");
|
||||
|
||||
foreach ($tmpval as $tmp_param) {
|
||||
$tmp_param_list[] = (!is_numeric ($tmp_param)) ? sprintf ('"%s"', $tmp_param) : $tmp_param;
|
||||
}
|
||||
if (preg_match ("/,/", $name)) {
|
||||
$tmp_func_name = sprintf ('%s', substr ($name, 0, $open_pos));
|
||||
$tmp_params = sprintf ('%s', substr ($name, $open_pos + 1, $close_pos - $open_pos - 1));
|
||||
$tmpval = null;
|
||||
$tmpval = explode (',', $tmp_params);
|
||||
|
||||
$tmpval = implode (',', $tmp_param_list);
|
||||
$name = sprintf ('%s(%s)', $tmp_func_name, $tmpval);
|
||||
}
|
||||
else {
|
||||
$name = sprintf ('%s("%s")', substr ($name, 0, $open_pos), substr ($name, $open_pos + 1, $close_pos - $open_pos - 1));
|
||||
}
|
||||
}
|
||||
foreach ($tmpval as $tmp_param) {
|
||||
$tmp_param_list[] = (!is_numeric ($tmp_param)) ? sprintf ('"%s"', $tmp_param) : $tmp_param;
|
||||
}
|
||||
|
||||
$column_list[] = sprintf ($click_count, $name). ($alias ? sprintf (' as %s', $alias) : '');
|
||||
}
|
||||
else {
|
||||
$column_list[] = sprintf($click_count, $name). ($alias ? sprintf(' as %s',$alias) : '');
|
||||
}
|
||||
}
|
||||
}
|
||||
$tmpval = implode (',', $tmp_param_list);
|
||||
$name = sprintf ('%s(%s)', $tmp_func_name, $tmpval);
|
||||
}
|
||||
else {
|
||||
$name = sprintf ('%s("%s")', substr ($name, 0, $open_pos), substr ($name, $open_pos + 1, $close_pos - $open_pos - 1));
|
||||
}
|
||||
}
|
||||
|
||||
if($alias) $column_list[$val['alias']] = sprintf ($click_count, $name). ($alias ? sprintf (' as %s', $alias) : '');
|
||||
else $column_list[] = sprintf ($click_count, $name);
|
||||
}
|
||||
else {
|
||||
if($alias) $column_list[$val['alias']] = sprintf($click_count, $name). ($alias ? sprintf(' as %s',$alias) : '');
|
||||
else $column_list[] = sprintf($click_count, $name);
|
||||
}
|
||||
}
|
||||
$columns = implode (',', $column_list);
|
||||
}
|
||||
|
||||
$condition = $this->getCondition ($output);
|
||||
|
||||
$output->column_list = $column_list;
|
||||
if ($output->list_count && $output->page) {
|
||||
return ($this->_getNavigationData($table_list, $columns, $left_join, $condition, $output));
|
||||
}
|
||||
|
|
@ -925,7 +926,6 @@
|
|||
//}
|
||||
}
|
||||
|
||||
$query = sprintf ("select %s from %s %s %s", $columns, implode (',',$table_list), implode (' ',$left_join), $condition);
|
||||
|
||||
if (count ($output->groups)) {
|
||||
foreach ($output->groups as $key => $value) {
|
||||
|
|
@ -942,10 +942,17 @@
|
|||
$value = sprintf ('"%s"', $value);
|
||||
}
|
||||
$output->groups[$key] = $value;
|
||||
|
||||
|
||||
if(count($output->arg_columns))
|
||||
{
|
||||
if($column_list[$value]) $output->arg_columns[] = $column_list[$value];
|
||||
}
|
||||
}
|
||||
$query .= sprintf (' group by %s', implode(',', $output->groups));
|
||||
$gourpby_query = sprintf ('group by %s', implode(',', $output->groups));
|
||||
}
|
||||
|
||||
|
||||
// list_count를 사용할 경우 적용
|
||||
if ($output->list_count['value']) {
|
||||
$start_count = 0;
|
||||
|
|
@ -965,19 +972,19 @@
|
|||
$index_list[] = sprintf('%s %s', $val[0], $val[1]);
|
||||
}
|
||||
if (count($index_list))
|
||||
$query .= ' order by '.implode(',', $index_list);
|
||||
$query = sprintf ('%s for orderby_num() between %d and %d', $query, $start_count + 1, $list_count + $start_count);
|
||||
$orderby_query = ' order by '.implode(',', $index_list);
|
||||
$orderby_query = sprintf ('%s for orderby_num() between %d and %d', $orderby_query, $start_count + 1, $list_count + $start_count);
|
||||
}
|
||||
else {
|
||||
if (count ($output->groups)) {
|
||||
$query = sprintf ('%s having groupby_num() between %d'. ' and %d', $query, $start_count + 1, $list_count + $start_count);
|
||||
$orderby_query = sprintf ('%s having groupby_num() between %d'. ' and %d', $orderby_query, $start_count + 1, $list_count + $start_count);
|
||||
}
|
||||
else {
|
||||
if ($condition) {
|
||||
$query = sprintf ('%s and inst_num() between %d'. ' and %d', $query, $start_count + 1, $list_count + $start_count);
|
||||
$orderby_query = sprintf ('%s and inst_num() between %d'. ' and %d', $orderby_query, $start_count + 1, $list_count + $start_count);
|
||||
}
|
||||
else {
|
||||
$query = sprintf ('%s where inst_num() between %d'. ' and %d', $query, $start_count + 1, $list_count + $start_count);
|
||||
$orderby_query = sprintf ('%s where inst_num() between %d'. ' and %d', $orderby_query, $start_count + 1, $list_count + $start_count);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -995,14 +1002,23 @@
|
|||
elseif ($val[0] == 'count') $val[0] = 'count (*)';
|
||||
else $val[0] = sprintf ('"%s"', $val[0]);
|
||||
$index_list[] = sprintf('%s %s', $val[0], $val[1]);
|
||||
|
||||
if(count($output->arg_columns) && $column_list[$val]) $output->arg_columns[] = $column_list[$key];
|
||||
}
|
||||
|
||||
if (count ($index_list)) {
|
||||
$query .= ' order by '.implode(',', $index_list);
|
||||
$orderby_query = ' order by '.implode(',', $index_list);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(count($output->arg_columns))
|
||||
{
|
||||
$columns = '"' . join('","',$output->arg_columns) . '"';
|
||||
}
|
||||
|
||||
$query = sprintf ("select %s from %s %s %s %s", $columns, implode (',',$table_list), implode (' ',$left_join), $condition, $groupby_query.$orderby_query);
|
||||
|
||||
$query .= (__DEBUG_QUERY__&1 && $output->query_id)?sprintf (' '.$this->comment_syntax, $this->query_id):'';
|
||||
$result = $this->_query ($query);
|
||||
if ($this->isError ()) return;
|
||||
|
|
@ -1074,20 +1090,18 @@
|
|||
function _getNavigationData ($table_list, $columns, $left_join, $condition, $output) {
|
||||
require_once (_XE_PATH_.'classes/page/PageHandler.class.php');
|
||||
|
||||
$count_condition = count($output->groups) ? sprintf('%s group by %s', $condition, implode(', ', $output->groups)) : $condition;
|
||||
$total_count = $this->getCountCache($output->tables, $count_condition);
|
||||
if ($total_count === false) {
|
||||
$count_query = sprintf('select count(*) as "count" from %s %s %s', implode(', ', $table_list), implode(' ', $left_join), $count_condition);
|
||||
if (count($output->groups)) {
|
||||
$count_query = sprintf('select count(*) as "count" from (%s) xet', $count_query);
|
||||
}
|
||||
$column_list = $output->column_list;
|
||||
|
||||
$count_query .= (__DEBUG_QUERY__&1 && $output->query_id)?sprintf (' '.$this->comment_syntax, $this->query_id):'';
|
||||
$result = $this->_query($count_query);
|
||||
$count_output = $this->_fetch($result);
|
||||
$total_count = (int)$count_output->count;
|
||||
$this->putCountCache($output->tables, $count_condition, $total_count);
|
||||
}
|
||||
$count_condition = count($output->groups) ? sprintf('%s group by %s', $condition, implode(', ', $output->groups)) : $condition;
|
||||
$count_query = sprintf('select count(*) as "count" from %s %s %s', implode(', ', $table_list), implode(' ', $left_join), $count_condition);
|
||||
if (count($output->groups)) {
|
||||
$count_query = sprintf('select count(*) as "count" from (%s) xet', $count_query);
|
||||
}
|
||||
|
||||
$count_query .= (__DEBUG_QUERY__&1 && $output->query_id)?sprintf (' '.$this->comment_syntax, $this->query_id):'';
|
||||
$result = $this->_query($count_query);
|
||||
$count_output = $this->_fetch($result);
|
||||
$total_count = (int)$count_output->count;
|
||||
|
||||
$list_count = $output->list_count['value'];
|
||||
if (!$list_count) $list_count = 20;
|
||||
|
|
@ -1120,7 +1134,6 @@
|
|||
//}
|
||||
}
|
||||
|
||||
$query = sprintf ("select %s from %s %s %s", $columns, implode (',', $table_list), implode(' ', $left_join), $condition);
|
||||
|
||||
if (count ($output->groups)) {
|
||||
foreach ($output->groups as $key => $value) {
|
||||
|
|
@ -1135,7 +1148,7 @@
|
|||
$output->groups[$key] = $value;
|
||||
}
|
||||
|
||||
$query .= sprintf (' group by %s', implode (',', $output->groups));
|
||||
$groupby_query = sprintf (' group by %s', implode (',', $output->groups));
|
||||
}
|
||||
|
||||
if ($output->order) {
|
||||
|
|
@ -1153,25 +1166,31 @@
|
|||
}
|
||||
|
||||
if (count ($index_list)) {
|
||||
$query .= ' order by '.implode(',', $index_list);
|
||||
$orderby_query = ' order by '.implode(',', $index_list);
|
||||
}
|
||||
|
||||
$query = sprintf ('%s for orderby_num() between %d and %d', $query, $start_count + 1, $list_count + $start_count);
|
||||
$orderby_query = sprintf ('%s for orderby_num() between %d and %d', $orderby_query, $start_count + 1, $list_count + $start_count);
|
||||
}
|
||||
else {
|
||||
if (count($output->groups)) {
|
||||
$query = sprintf ('%s having groupby_num() between %d and %d', $query, $start_count + 1, $list_count + $start_count);
|
||||
$orderby_query = sprintf ('%s having groupby_num() between %d and %d', $orderby_query, $start_count + 1, $list_count + $start_count);
|
||||
}
|
||||
else {
|
||||
if ($condition) {
|
||||
$query = sprintf ('%s and inst_num() between %d and %d', $query, $start_count + 1, $list_count + $start_count);
|
||||
$orderby_query = sprintf ('%s and inst_num() between %d and %d', $orderby_query, $start_count + 1, $list_count + $start_count);
|
||||
}
|
||||
else {
|
||||
$query = sprintf('%s where inst_num() between %d and %d', $query, $start_count + 1, $list_count + $start_count);
|
||||
$orderby_query = sprintf('%s where inst_num() between %d and %d', $orderby_query, $start_count + 1, $list_count + $start_count);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(count($output->arg_columns))
|
||||
{
|
||||
$columns = '"' . join('","',$output->arg_columns) . '"';
|
||||
}
|
||||
|
||||
$query = sprintf ("select %s from %s %s %s %s", $columns, implode (',',$table_list), implode (' ',$left_join), $condition, $groupby_query.$orderby_query);
|
||||
$query .= (__DEBUG_QUERY__&1 && $output->query_id)?sprintf (' '.$this->comment_syntax, $this->query_id):'';
|
||||
$result = $this->_query ($query);
|
||||
|
||||
|
|
|
|||
|
|
@ -822,13 +822,14 @@
|
|||
if($alias == "")
|
||||
$column_list[] = $this->autoQuotes($name);
|
||||
else
|
||||
$column_list[] = sprintf("%s as \"%s\"", $this->autoQuotes($name), $alias);
|
||||
$column_list[$alias] = sprintf("%s as \"%s\"", $this->autoQuotes($name), $alias);
|
||||
}
|
||||
$columns = implode(',',$column_list);
|
||||
}
|
||||
|
||||
$condition = $this->getCondition($output);
|
||||
|
||||
$output->column_list = $column_list;
|
||||
if($output->list_count && $output->page) return $this->_getNavigationData($table_list, $columns, $left_join, $condition, $output);
|
||||
|
||||
// list_order, update_order 로 정렬시에 인덱스 사용을 위해 condition에 쿼리 추가
|
||||
|
|
@ -848,24 +849,29 @@
|
|||
if($output->list_count['value']) $limit = sprintf('FIRST %d', $output->list_count['value']);
|
||||
else $limit = '';
|
||||
|
||||
$query = sprintf("select %s from %s %s %s", $columns, implode(',',$table_list),implode(' ',$left_join), $condition);
|
||||
|
||||
if($output->groups) {
|
||||
foreach($output->groups as $key => $val) {
|
||||
$group_list[] = $this->autoQuotes($val);
|
||||
if($column_list[$val]) $output->arg_columns[] = $column_list[$val];
|
||||
}
|
||||
if(count($group_list)) $query .= sprintf(" group by %s", implode(",",$group_list));
|
||||
if(count($group_list)) $groupby_query = sprintf(" group by %s", implode(",",$group_list));
|
||||
}
|
||||
|
||||
if($output->order) {
|
||||
foreach($output->order as $key => $val) {
|
||||
$index_list[] = sprintf("%s %s", $this->autoQuotes($val[0]), $val[1]);
|
||||
if(count($output->arg_columns) && $column_list[$val[0]]) $output->arg_columns[] = $column_list[$val[0]];
|
||||
}
|
||||
if(count($index_list)) $query .= sprintf(" order by %s", implode(",",$index_list));
|
||||
if(count($index_list)) $orderby_query = sprintf(" order by %s", implode(",",$index_list));
|
||||
}
|
||||
|
||||
if(count($output->arg_columns))
|
||||
{
|
||||
$columns = '"' . join('","',$output->arg_columns) . '"';
|
||||
}
|
||||
$query = sprintf("select %s from %s %s %s %s", $columns, implode(',',$table_list),implode(' ',$left_join), $condition, $groupby_query.$orderby_query);
|
||||
$query .= ";";
|
||||
|
||||
$query .= (__DEBUG_QUERY__&1 && $output->query_id)?sprintf(' '.$this->comment_syntax,$this->query_id):'';
|
||||
$result = $this->_query($query);
|
||||
if($this->isError()) {
|
||||
|
|
@ -896,10 +902,14 @@
|
|||
function _getNavigationData($table_list, $columns, $left_join, $condition, $output) {
|
||||
require_once(_XE_PATH_.'classes/page/PageHandler.class.php');
|
||||
|
||||
$column_list = $output->column_list;
|
||||
|
||||
$query_groupby = '';
|
||||
if ($output->groups) {
|
||||
foreach ($output->groups as $key => $val)
|
||||
foreach ($output->groups as $key => $val){
|
||||
$group_list[] = $this->autoQuotes($val);
|
||||
if($column_list[$val]) $output->arg_columns[] = $column_list[$val];
|
||||
}
|
||||
if (count($group_list)) $query_groupby = sprintf(" GROUP BY %s", implode(", ", $group_list));
|
||||
}
|
||||
|
||||
|
|
@ -922,16 +932,12 @@
|
|||
|
||||
// 전체 개수를 구함
|
||||
$count_query = sprintf("select count(*) as \"count\" from %s %s %s", implode(',',$table_list),implode(' ',$left_join), $condition);
|
||||
$total_count = $this->getCountCache($output->tables, $condition);
|
||||
if($total_count === false) {
|
||||
$count_query .= (__DEBUG_QUERY__&1 && $output->query_id)?sprintf(' '.$this->comment_syntax,$this->query_id . ' count(*)'):'';
|
||||
$result = $this->_query($count_query);
|
||||
$count_output = $this->_fetch($result);
|
||||
if(!$this->transaction_started) @ibase_commit($this->fd);
|
||||
$count_query .= (__DEBUG_QUERY__&1 && $output->query_id)?sprintf(' '.$this->comment_syntax,$this->query_id . ' count(*)'):'';
|
||||
$result = $this->_query($count_query);
|
||||
$count_output = $this->_fetch($result);
|
||||
if(!$this->transaction_started) @ibase_commit($this->fd);
|
||||
|
||||
$total_count = (int)$count_output->count;
|
||||
$this->putCountCache($output->tables, $condition, $total_count);
|
||||
}
|
||||
$total_count = (int)$count_output->count;
|
||||
|
||||
$list_count = $output->list_count['value'];
|
||||
if(!$list_count) $list_count = 20;
|
||||
|
|
@ -962,17 +968,17 @@
|
|||
}
|
||||
|
||||
$limit = sprintf('FIRST %d SKIP %d ', $list_count, $start_count);
|
||||
$query = sprintf('SELECT %s %s FROM %s %s %s', $limit, $columns, implode(',',$table_list), implode(' ',$left_join), $condition);
|
||||
|
||||
if (strlen($query_groupby)) $query .= $query_groupby;
|
||||
|
||||
if($output->order) {
|
||||
foreach($output->order as $key => $val) {
|
||||
$index_list[] = sprintf("%s %s", $this->autoQuotes($val[0]), $val[1]);
|
||||
if(count($output->arg_columns) && $column_list[$val[0]]) $output->arg_columns[] = $column_list[$val[0]];
|
||||
}
|
||||
if(count($index_list)) $query .= sprintf(" ORDER BY %s", implode(",",$index_list));
|
||||
if(count($index_list)) $orderby_query = sprintf(" ORDER BY %s", implode(",",$index_list));
|
||||
}
|
||||
|
||||
$query = sprintf('SELECT %s %s FROM %s %s %s, %s', $limit, $columns, implode(',',$table_list), implode(' ',$left_join), $condition, $groupby_query.$orderby_query);
|
||||
$query .= ";";
|
||||
$query .= (__DEBUG_QUERY__&1 && $output->query_id)?sprintf(' '.$this->comment_syntax,$this->query_id):'';
|
||||
$result = $this->_query($query);
|
||||
|
|
|
|||
|
|
@ -639,31 +639,29 @@
|
|||
}
|
||||
}
|
||||
|
||||
if(!$output->columns) {
|
||||
$columns = '*';
|
||||
} else {
|
||||
$column_list = array();
|
||||
foreach($output->columns as $key => $val) {
|
||||
$name = $val['name'];
|
||||
if(preg_match('/^substr\(/i',$name)) $name = preg_replace('/^substr\(/i','substring(',$name);
|
||||
$alias = $val['alias'];
|
||||
if($val['click_count']) $click_count[] = $val['name'];
|
||||
if(!$output->columns) $output->columns = array('*');
|
||||
$column_list = array();
|
||||
foreach($output->columns as $key => $val) {
|
||||
$name = $val['name'];
|
||||
if(preg_match('/^substr\(/i',$name)) $name = preg_replace('/^substr\(/i','substring(',$name);
|
||||
$alias = $val['alias'];
|
||||
if($val['click_count']) $click_count[] = $val['name'];
|
||||
|
||||
if(substr($name,-1) == '*') {
|
||||
$column_list[] = $name;
|
||||
} elseif(strpos($name,'.')===false && strpos($name,'(')===false) {
|
||||
if($alias) $column_list[] = sprintf('[%s] as [%s]', $name, $alias);
|
||||
else $column_list[] = sprintf('[%s]',$name);
|
||||
} else {
|
||||
if($alias) $column_list[] = sprintf('%s as [%s]', $name, $alias);
|
||||
else $column_list[] = sprintf('%s',$name);
|
||||
}
|
||||
}
|
||||
$columns = implode(',',$column_list);
|
||||
}
|
||||
if(substr($name,-1) == '*') {
|
||||
$column_list[] = $name;
|
||||
} elseif(strpos($name,'.')===false && strpos($name,'(')===false) {
|
||||
if($alias) $column_list[$alias] = sprintf('[%s] as [%s]', $name, $alias);
|
||||
else $column_list[] = sprintf('[%s]',$name);
|
||||
} else {
|
||||
if($alias) $column_list[$alias] = sprintf('%s as [%s]', $name, $alias);
|
||||
else $column_list[] = sprintf('%s',$name);
|
||||
}
|
||||
}
|
||||
$columns = implode(',',$column_list);
|
||||
|
||||
$condition = $this->getCondition($output);
|
||||
|
||||
$output->column_list = $column_list;
|
||||
if($output->list_count && $output->page) return $this->_getNavigationData($table_list, $columns, $left_join, $condition, $output);
|
||||
|
||||
// list_order, update_order 로 정렬시에 인덱스 사용을 위해 condition에 쿼리 추가
|
||||
|
|
@ -679,26 +677,29 @@
|
|||
}
|
||||
}
|
||||
|
||||
$query = sprintf("%s from %s %s %s", $columns, implode(',',$table_list),implode(' ',$left_join), $condition);
|
||||
|
||||
if(count($output->groups)){
|
||||
foreach($output->groups as $k => $v ){
|
||||
if(preg_match('/^substr\(/i',$v)) $output->groups[$k] = preg_replace('/^substr\(/i','substring(',$v);
|
||||
if($column_list[$v]) $output->arg_columns[] = $column_list[$v];
|
||||
}
|
||||
$query .= sprintf(' group by %s', implode(',',$output->groups));
|
||||
$groupby_query = sprintf(' group by %s', implode(',',$output->groups));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
if($output->order && !preg_match('/count\(\*\)/i',$columns) ) {
|
||||
foreach($output->order as $key => $val) {
|
||||
if(preg_match('/^substr\(/i',$val[0])) $name = preg_replace('/^substr\(/i','substring(',$val[0]);
|
||||
$index_list[] = sprintf('%s %s', $val[0], $val[1]);
|
||||
if(count($output->arg_columns) && $column_list[$val[0]]) $output->arg_columns[] = $column_list[$val[0]];
|
||||
}
|
||||
if(count($index_list)) $query .= ' order by '.implode(',',$index_list);
|
||||
if(count($index_list)) $orderby_query = ' order by '.implode(',',$index_list);
|
||||
}
|
||||
|
||||
if(count($output->arg_columns))
|
||||
{
|
||||
$columns = '[' . join('],[',$output->arg_columns) . ']';
|
||||
}
|
||||
|
||||
$query = sprintf("%s from %s %s %s %s", $columns, implode(',',$table_list),implode(' ',$left_join), $condition, $groupby_query.$orderby_query);
|
||||
// list_count를 사용할 경우 적용
|
||||
if($output->list_count['value']) $query = sprintf('select top %d %s', $output->list_count['value'], $query);
|
||||
else $query = "select ".$query;
|
||||
|
|
@ -729,33 +730,31 @@
|
|||
function _getNavigationData($table_list, $columns, $left_join, $condition, $output) {
|
||||
require_once(_XE_PATH_.'classes/page/PageHandler.class.php');
|
||||
|
||||
$column_list = $output->column_list;
|
||||
|
||||
// 전체 개수를 구함
|
||||
if(count($output->groups)){
|
||||
foreach($output->groups as $k => $v ){
|
||||
if(preg_match('/^substr\(/i',$v)) $output->groups[$k] = preg_replace('/^substr\(/i','substring(',$v);
|
||||
if($column_list[$v]) $output->arg_columns[] = $column_list[$v];
|
||||
}
|
||||
$count_condition = sprintf('%s group by %s', $condition, implode(', ', $output->groups));
|
||||
}else{
|
||||
$count_condition = $condition;
|
||||
}
|
||||
|
||||
|
||||
$total_count = $this->getCountCache($output->tables, $count_condition);
|
||||
if($total_count === false) {
|
||||
$count_query = sprintf("select count(*) as count from %s %s %s", implode(', ', $table_list), implode(' ', $left_join), $count_condition);
|
||||
if (count($output->groups)) $count_query = sprintf('select count(*) as count from (%s) xet', $count_query);
|
||||
|
||||
$param = $this->param;
|
||||
$count_query = sprintf("select count(*) as count from %s %s %s", implode(', ', $table_list), implode(' ', $left_join), $count_condition);
|
||||
if (count($output->groups)) $count_query = sprintf('select count(*) as count from (%s) xet', $count_query);
|
||||
|
||||
$param = $this->param;
|
||||
|
||||
$count_query .= (__DEBUG_QUERY__&1 && $output->query_id)?sprintf(' '.$this->comment_syntax,$this->query_id . ' count(*)'):'';
|
||||
$result = $this->_query($count_query);
|
||||
|
||||
$this->param = $param;
|
||||
$count_output = $this->_fetch($result);
|
||||
$count_query .= (__DEBUG_QUERY__&1 && $output->query_id)?sprintf(' '.$this->comment_syntax,$this->query_id . ' count(*)'):'';
|
||||
$result = $this->_query($count_query);
|
||||
|
||||
$this->param = $param;
|
||||
$count_output = $this->_fetch($result);
|
||||
|
||||
$total_count = (int)$count_output->count;
|
||||
$this->putCountCache($output->tables, $count_condition, $total_count);
|
||||
}
|
||||
$total_count = (int)$count_output->count;
|
||||
|
||||
$list_count = $output->list_count['value'];
|
||||
if(!$list_count) $list_count = 20;
|
||||
|
|
@ -785,13 +784,14 @@
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
// group by 절 추가
|
||||
if(count($output->groups)){
|
||||
foreach($output->groups as $k => $v ){
|
||||
if(preg_match('/^substr\(/i',$v)) $output->groups[$k] = preg_replace('/^substr\(/i','substring(',$v);
|
||||
if($column_list[$v]) $output->arg_columns[] = $column_list[$v];
|
||||
}
|
||||
$group .= sprintf('group by %s', implode(',',$output->groups));
|
||||
|
||||
$group = sprintf('group by %s', implode(',',$output->groups));
|
||||
}
|
||||
|
||||
// order 절 추가
|
||||
|
|
@ -801,6 +801,7 @@
|
|||
if(preg_match('/^substr\(/i',$val[0])) $name = preg_replace('/^substr\(/i','substring(',$val[0]);
|
||||
$order_targets[$val[0]] = $val[1];
|
||||
$index_list[] = sprintf('%s %s', $val[0], $val[1]);
|
||||
if(count($output->arg_columns) && $column_list[$val[0]]) $output->arg_columns[] = $column_list[$val[0]];
|
||||
}
|
||||
if(count($index_list)) $order .= 'order by '.implode(',',$index_list);
|
||||
}
|
||||
|
|
@ -809,6 +810,11 @@
|
|||
else $order_targets['xe_seq'] = 'desc';
|
||||
}
|
||||
|
||||
if(count($output->arg_columns))
|
||||
{
|
||||
$columns = '[' . join('],[',$output->arg_columns) . ']';
|
||||
}
|
||||
|
||||
if($start_count<1) {
|
||||
$query = sprintf('select top %d %s from %s %s %s %s %s', $list_count, $columns, implode(',',$table_list), implode(' ',$left_join), $condition, $group, $order);
|
||||
|
||||
|
|
|
|||
|
|
@ -525,36 +525,56 @@
|
|||
$left_join = array();
|
||||
// why???
|
||||
$left_tables= (array)$output->left_tables;
|
||||
|
||||
foreach($left_tables as $key => $val) {
|
||||
$condition = $this->_getCondition($output->left_conditions[$key],$output->column_type);
|
||||
if($condition){
|
||||
$left_join[] = $val . ' `'.$this->prefix.$output->_tables[$key].'` as '.$key . ' on (' . $condition . ')';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$click_count = array();
|
||||
if(!$output->columns) {
|
||||
$columns = '*';
|
||||
} else {
|
||||
$column_list = array();
|
||||
foreach($output->columns as $key => $val) {
|
||||
$name = $val['name'];
|
||||
$alias = $val['alias'];
|
||||
if($val['click_count']) $click_count[] = $val['name'];
|
||||
if(!$output->columns) $output->columns = array('*');
|
||||
|
||||
if(substr($name,-1) == '*') {
|
||||
$column_list[] = $name;
|
||||
} elseif(strpos($name,'.')===false && strpos($name,'(')===false) {
|
||||
if($alias) $column_list[] = sprintf('`%s` as `%s`', $name, $alias);
|
||||
else $column_list[] = sprintf('`%s`',$name);
|
||||
} else {
|
||||
if($alias) $column_list[] = sprintf('%s as `%s`', $name, $alias);
|
||||
else $column_list[] = sprintf('%s',$name);
|
||||
}
|
||||
}
|
||||
$columns = implode(',',$column_list);
|
||||
}
|
||||
$column_list = array();
|
||||
foreach($output->columns as $key => $val)
|
||||
{
|
||||
$name = $val['name'];
|
||||
$alias = $val['alias'];
|
||||
if($val['click_count']) $click_count[] = $val['name'];
|
||||
|
||||
if(substr($name,-1) == '*')
|
||||
{
|
||||
$column_list[] = $name;
|
||||
}
|
||||
else if(strpos($name,'.')===false && strpos($name,'(')===false)
|
||||
{
|
||||
if($alias)
|
||||
{
|
||||
$col = sprintf('`%s` as `%s`', $name, $alias);
|
||||
$column_list[$alias] = $col;
|
||||
}
|
||||
else
|
||||
{
|
||||
$column_list[] = sprintf('`%s`',$name);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if($alias)
|
||||
{
|
||||
$col = sprintf('%s as `%s`', $name, $alias);
|
||||
$column_list[$alias] = $col;
|
||||
}
|
||||
else
|
||||
{
|
||||
$column_list[] = sprintf('%s',$name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$columns = implode(',',$column_list);
|
||||
$output->column_list = $column_list;
|
||||
$condition = $this->getCondition($output);
|
||||
|
||||
if($output->list_count && $output->page) return $this->_getNavigationData($table_list, $columns, $left_join, $condition, $output);
|
||||
|
|
@ -572,17 +592,35 @@
|
|||
}
|
||||
}
|
||||
|
||||
$query = sprintf("select %s from %s %s %s", $columns, implode(',',$table_list),implode(' ',$left_join), $condition);
|
||||
|
||||
if(count($output->groups)) $query .= sprintf(' group by %s', implode(',',$output->groups));
|
||||
if(count($output->groups))
|
||||
{
|
||||
$groupby_query = sprintf(' group by %s', implode(',',$output->groups));
|
||||
|
||||
if(count($output->arg_columns))
|
||||
{
|
||||
foreach($output->groups as $group)
|
||||
{
|
||||
if($column_list[$group]) $output->arg_columns[] = $column_list[$group];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if($output->order) {
|
||||
foreach($output->order as $key => $val) {
|
||||
$index_list[] = sprintf('%s %s', $val[0], $val[1]);
|
||||
if(count($output->arg_columns) && $column_list[$val[0]]) $output->arg_columns[] = $column_list[$val[0]];
|
||||
}
|
||||
if(count($index_list)) $query .= ' order by '.implode(',',$index_list);
|
||||
if(count($index_list)) $orderby_query .= ' order by '.implode(',',$index_list);
|
||||
}
|
||||
|
||||
if(count($output->arg_columns))
|
||||
{
|
||||
$columns = '`' . join('`,`',$output->arg_columns) . '`';
|
||||
}
|
||||
|
||||
$query = sprintf("select %s from %s %s %s %s", $columns, implode(',',$table_list),implode(' ',$left_join), $condition, $groupby_query.$orderby_query);
|
||||
|
||||
// list_count를 사용할 경우 적용
|
||||
if($output->list_count['value']) $query = sprintf('%s limit %d', $query, $output->list_count['value']);
|
||||
|
||||
|
|
@ -591,7 +629,7 @@
|
|||
$result = $this->_query($query);
|
||||
if($this->isError()) return;
|
||||
|
||||
if(count($click_count)>0 && count($output->conditions)>0){
|
||||
if(count($click_count) && count($output->conditions)){
|
||||
$_query = '';
|
||||
foreach($click_count as $k => $c) $_query .= sprintf(',%s=%s+1 ',$c,$c);
|
||||
$_query = sprintf('update %s set %s %s',implode(',',$table_list), substr($_query,1), $condition);
|
||||
|
|
@ -602,6 +640,7 @@
|
|||
|
||||
$buff = new Object();
|
||||
$buff->data = $data;
|
||||
|
||||
return $buff;
|
||||
}
|
||||
|
||||
|
|
@ -613,20 +652,17 @@
|
|||
function _getNavigationData($table_list, $columns, $left_join, $condition, $output) {
|
||||
require_once(_XE_PATH_.'classes/page/PageHandler.class.php');
|
||||
|
||||
// 전체 개수를 구함
|
||||
$count_condition = count($output->groups) ? sprintf('%s group by %s', $condition, implode(', ', $output->groups)) : $condition;
|
||||
$total_count = $this->getCountCache($output->tables, $count_condition);
|
||||
if($total_count === false) {
|
||||
$count_query = sprintf("select count(*) as count from %s %s %s", implode(', ', $table_list), implode(' ', $left_join), $count_condition);
|
||||
if (count($output->groups))
|
||||
$count_query = sprintf('select count(*) as count from (%s) xet', $count_query);
|
||||
$column_list = $output->column_list;
|
||||
|
||||
$count_query .= (__DEBUG_QUERY__&1 && $output->query_id)?sprintf(' '.$this->comment_syntax,$this->query_id . ' count(*)'):'';
|
||||
$result = $this->_query($count_query);
|
||||
$count_output = $this->_fetch($result);
|
||||
$total_count = (int)$count_output->count;
|
||||
$this->putCountCache($output->tables, $count_condition, $total_count);
|
||||
}
|
||||
// 전체 개수를 구함
|
||||
$count_condition = count($output->groups) ? sprintf('%s group by %s', $condition, implode(', ', $output->groups)) : $condition;
|
||||
$count_query = sprintf("select count(*) as count from %s %s %s", implode(', ', $table_list), implode(' ', $left_join), $count_condition);
|
||||
if (count($output->groups)) $count_query = sprintf('select count(*) as count from (%s) xet', $count_query);
|
||||
|
||||
$count_query .= (__DEBUG_QUERY__&1 && $output->query_id)?sprintf(' '.$this->comment_syntax,$this->query_id . ' count(*)'):'';
|
||||
$result = $this->_query($count_query);
|
||||
$count_output = $this->_fetch($result);
|
||||
$total_count = (int)$count_output->count;
|
||||
|
||||
$list_count = $output->list_count['value'];
|
||||
if(!$list_count) $list_count = 20;
|
||||
|
|
@ -656,17 +692,33 @@
|
|||
}
|
||||
}
|
||||
|
||||
$query = sprintf("select %s from %s %s %s", $columns, implode(',',$table_list), implode(' ',$left_join), $condition);
|
||||
if(count($output->groups)){
|
||||
$groupby_query = sprintf(' group by %s', implode(',',$output->groups));
|
||||
|
||||
if(count($output->groups)) $query .= sprintf(' group by %s', implode(',',$output->groups));
|
||||
if(count($output->arg_columns))
|
||||
{
|
||||
foreach($output->groups as $group)
|
||||
{
|
||||
if($column_list[$group]) $output->arg_columns[] = $column_list[$group];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(count($output->order)) {
|
||||
foreach($output->order as $key => $val) {
|
||||
$index_list[] = sprintf('%s %s', $val[0], $val[1]);
|
||||
if(count($output->arg_columns) && $column_list[$val[0]]) $output->arg_columns[] = $column_list[$val[0]];
|
||||
}
|
||||
if(count($index_list)) $query .= ' order by '.implode(',',$index_list);
|
||||
if(count($index_list)) $orderby_query = ' order by '.implode(',',$index_list);
|
||||
}
|
||||
|
||||
|
||||
if(count($output->arg_columns))
|
||||
{
|
||||
$columns = '`' . join('`,`',$output->arg_columns) . '`';
|
||||
}
|
||||
|
||||
$query = sprintf("select %s from %s %s %s %s", $columns, implode(',',$table_list), implode(' ',$left_join), $condition, $groupby_query.$orderby_query);
|
||||
$query = sprintf('%s limit %d, %d', $query, $start_count, $list_count);
|
||||
$query .= (__DEBUG_QUERY__&1 && $output->query_id)?sprintf(' '.$this->comment_syntax,$this->query_id):'';
|
||||
|
||||
|
|
|
|||
|
|
@ -567,6 +567,7 @@
|
|||
|
||||
$condition = $this->getCondition($output);
|
||||
|
||||
$output->column_list = $column_list;
|
||||
if($output->list_count && $output->page) return $this->_getNavigationData($table_list, $columns, $left_join, $condition, $output);
|
||||
|
||||
|
||||
|
|
@ -624,20 +625,18 @@
|
|||
function _getNavigationData($table_list, $columns, $left_join, $condition, $output) {
|
||||
require_once(_XE_PATH_.'classes/page/PageHandler.class.php');
|
||||
|
||||
$column_list = $output->column_list;
|
||||
|
||||
// 전체 개수를 구함
|
||||
$count_condition = count($output->groups) ? sprintf('%s group by %s', $condition, implode(', ', $output->groups)) : $condition;
|
||||
$total_count = $this->getCountCache($output->tables, $count_condition);
|
||||
if($total_count === false) {
|
||||
$count_query = sprintf("select count(*) as count from %s %s %s", implode(', ', $table_list), implode(' ', $left_join), $count_condition);
|
||||
if (count($output->groups))
|
||||
$count_query = sprintf('select count(*) as count from (%s) xet', $count_query);
|
||||
$count_query = sprintf("select count(*) as count from %s %s %s", implode(', ', $table_list), implode(' ', $left_join), $count_condition);
|
||||
if (count($output->groups))
|
||||
$count_query = sprintf('select count(*) as count from (%s) xet', $count_query);
|
||||
|
||||
$count_query .= (__DEBUG_QUERY__&1 && $output->query_id)?sprintf(' '.$this->comment_syntax,$this->query_id . ' count(*)'):'';
|
||||
$result = $this->_query($count_query);
|
||||
$count_output = $this->_fetch($result);
|
||||
$total_count = (int)$count_output->count;
|
||||
$this->putCountCache($output->tables, $count_condition, $total_count);
|
||||
}
|
||||
$count_query .= (__DEBUG_QUERY__&1 && $output->query_id)?sprintf(' '.$this->comment_syntax,$this->query_id . ' count(*)'):'';
|
||||
$result = $this->_query($count_query);
|
||||
$count_output = $this->_fetch($result);
|
||||
$total_count = (int)$count_output->count;
|
||||
|
||||
$list_count = $output->list_count['value'];
|
||||
if(!$list_count) $list_count = 20;
|
||||
|
|
|
|||
|
|
@ -523,30 +523,29 @@
|
|||
}
|
||||
|
||||
$click_count = array();
|
||||
if(!$output->columns) {
|
||||
$columns = '*';
|
||||
} else {
|
||||
$column_list = array();
|
||||
foreach($output->columns as $key => $val) {
|
||||
$name = $val['name'];
|
||||
$alias = $val['alias'];
|
||||
if($val['click_count']) $click_count[] = $val['name'];
|
||||
if(!$output->columns) $output->columns = array('*');
|
||||
|
||||
if(substr($name,-1) == '*') {
|
||||
$column_list[] = $name;
|
||||
} elseif(strpos($name,'.')===false && strpos($name,'(')===false) {
|
||||
if($alias) $column_list[] = sprintf('`%s` as `%s`', $name, $alias);
|
||||
else $column_list[] = sprintf('`%s`',$name);
|
||||
} else {
|
||||
if($alias) $column_list[] = sprintf('%s as `%s`', $name, $alias);
|
||||
else $column_list[] = sprintf('%s',$name);
|
||||
}
|
||||
}
|
||||
$columns = implode(',',$column_list);
|
||||
}
|
||||
$column_list = array();
|
||||
foreach($output->columns as $key => $val) {
|
||||
$name = $val['name'];
|
||||
$alias = $val['alias'];
|
||||
if($val['click_count']) $click_count[] = $val['name'];
|
||||
|
||||
if(substr($name,-1) == '*') {
|
||||
$column_list[] = $name;
|
||||
} elseif(strpos($name,'.')===false && strpos($name,'(')===false) {
|
||||
if($alias) $column_list[$alias] = sprintf('`%s` as `%s`', $name, $alias);
|
||||
else $column_list[] = sprintf('`%s`',$name);
|
||||
} else {
|
||||
if($alias) $column_list[$alias] = sprintf('%s as `%s`', $name, $alias);
|
||||
else $column_list[] = sprintf('%s',$name);
|
||||
}
|
||||
}
|
||||
$columns = implode(',',$column_list);
|
||||
|
||||
$condition = $this->getCondition($output);
|
||||
|
||||
$output->column_list = $column_list;
|
||||
if($output->list_count && $output->page) return $this->_getNavigationData($table_list, $columns, $left_join, $condition, $output);
|
||||
|
||||
// list_order, update_order 로 정렬시에 인덱스 사용을 위해 condition에 쿼리 추가
|
||||
|
|
@ -562,25 +561,45 @@
|
|||
}
|
||||
}
|
||||
|
||||
$query = sprintf("select %s from %s %s %s", $columns, implode(',',$table_list),implode(' ',$left_join), $condition);
|
||||
|
||||
if(count($output->groups)) $query .= sprintf(' group by %s', implode(',',$output->groups));
|
||||
if(count($output->groups))
|
||||
{
|
||||
$groupby_query = sprintf(' group by %s', implode(',',$output->groups));
|
||||
|
||||
if(count($output->arg_columns))
|
||||
{
|
||||
foreach($output->groups as $group)
|
||||
{
|
||||
if($column_list[$group]) $output->arg_columns[] = $column_list[$group];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if($output->order) {
|
||||
foreach($output->order as $key => $val) {
|
||||
$index_list[] = sprintf('%s %s', $val[0], $val[1]);
|
||||
if(count($output->arg_columns) && $column_list[$val[0]]) $output->arg_columns[] = $column_list[$val[0]];
|
||||
}
|
||||
if(count($index_list)) $query .= ' order by '.implode(',',$index_list);
|
||||
if(count($index_list)) $orderby_query = ' order by '.implode(',',$index_list);
|
||||
}
|
||||
|
||||
// list_count를 사용할 경우 적용
|
||||
if($output->list_count['value']) $query = sprintf('%s limit %d', $query, $output->list_count['value']);
|
||||
|
||||
|
||||
if(count($output->arg_columns))
|
||||
{
|
||||
$columns = '`' . join('`,`',$output->arg_columns) . '`';
|
||||
}
|
||||
|
||||
|
||||
$query = sprintf("select %s from %s %s %s %s", $columns, implode(',',$table_list),implode(' ',$left_join), $condition, $groupnby_query.$orderby_query);
|
||||
|
||||
$query .= (__DEBUG_QUERY__&1 && $output->query_id)?sprintf(' '.$this->comment_syntax,$this->query_id):'';
|
||||
$result = $this->_query($query);
|
||||
if($this->isError()) return;
|
||||
|
||||
if(count($click_count)>0 && count($output->conditions)>0){
|
||||
if(count($click_count) && count($output->conditions)){
|
||||
$_query = '';
|
||||
foreach($click_count as $k => $c) $_query .= sprintf(',%s=%s+1 ',$c,$c);
|
||||
$_query = sprintf('update %s set %s %s',implode(',',$table_list), substr($_query,1), $condition);
|
||||
|
|
@ -602,20 +621,18 @@
|
|||
function _getNavigationData($table_list, $columns, $left_join, $condition, $output) {
|
||||
require_once(_XE_PATH_.'classes/page/PageHandler.class.php');
|
||||
|
||||
$column_list = $output->column_list;
|
||||
|
||||
// 전체 개수를 구함
|
||||
$count_condition = count($output->groups) ? sprintf('%s group by %s', $condition, implode(', ', $output->groups)) : $condition;
|
||||
$total_count = $this->getCountCache($output->tables, $count_condition);
|
||||
if($total_count === false) {
|
||||
$count_query = sprintf("select count(*) as count from %s %s %s", implode(', ', $table_list), implode(' ', $left_join), $count_condition);
|
||||
if (count($output->groups))
|
||||
$count_query = sprintf('select count(*) as count from (%s) xet', $count_query);
|
||||
$count_query = sprintf("select count(*) as count from %s %s %s", implode(', ', $table_list), implode(' ', $left_join), $count_condition);
|
||||
if (count($output->groups)) $count_query = sprintf('select count(*) as count from (%s) xet', $count_query);
|
||||
|
||||
$count_query .= (__DEBUG_QUERY__&1 && $output->query_id)?sprintf(' '.$this->comment_syntax,$this->query_id . ' count(*)'):'';
|
||||
$result = $this->_query($count_query);
|
||||
$count_output = $this->_fetch($result);
|
||||
$total_count = (int)$count_output->count;
|
||||
$this->putCountCache($output->tables, $count_condition, $total_count);
|
||||
}
|
||||
$count_query .= (__DEBUG_QUERY__&1 && $output->query_id)?sprintf(' '.$this->comment_syntax,$this->query_id . ' count(*)'):'';
|
||||
$result = $this->_query($count_query);
|
||||
$count_output = $this->_fetch($result);
|
||||
$total_count = (int)$count_output->count;
|
||||
$this->putCountCache($output->tables, $count_condition, $total_count);
|
||||
|
||||
$list_count = $output->list_count['value'];
|
||||
if(!$list_count) $list_count = 20;
|
||||
|
|
@ -644,20 +661,37 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(count($output->groups)){
|
||||
$groupby_query = sprintf(' group by %s', implode(',',$output->groups));
|
||||
|
||||
$query = sprintf("select %s from %s %s %s", $columns, implode(',',$table_list), implode(' ',$left_join), $condition);
|
||||
|
||||
if(count($output->groups)) $query .= sprintf(' group by %s', implode(',',$output->groups));
|
||||
if(count($output->arg_columns))
|
||||
{
|
||||
foreach($output->groups as $group)
|
||||
{
|
||||
if($column_list[$group]) $output->arg_columns[] = $column_list[$group];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(count($output->order)) {
|
||||
foreach($output->order as $key => $val) {
|
||||
$index_list[] = sprintf('%s %s', $val[0], $val[1]);
|
||||
if(count($output->arg_columns) && $column_list[$val[0]]) $output->arg_columns[] = $column_list[$val[0]];
|
||||
}
|
||||
if(count($index_list)) $query .= ' order by '.implode(',',$index_list);
|
||||
if(count($index_list)) $orderby_query = ' order by '.implode(',',$index_list);
|
||||
}
|
||||
|
||||
|
||||
if(count($output->arg_columns))
|
||||
{
|
||||
$columns = '`' . join('`,`',$output->arg_columns) . '`';
|
||||
}
|
||||
|
||||
$query = sprintf("select %s from %s %s %s %s", $columns, implode(',',$table_list), implode(' ',$left_join), $condition, $groupby_query.$orderby_query);
|
||||
$query = sprintf('%s limit %d, %d', $query, $start_count, $list_count);
|
||||
$query .= (__DEBUG_QUERY__&1 && $output->query_id)?sprintf(' '.$this->comment_syntax,$this->query_id):'';
|
||||
|
||||
$result = $this->_query($query);
|
||||
if($this->isError()) {
|
||||
$buff = new Object();
|
||||
|
|
|
|||
|
|
@ -682,12 +682,12 @@ class DBPostgresql extends DB
|
|||
$column_list[] = $name;
|
||||
} elseif (strpos($name, '.') === false && strpos($name, '(') === false) {
|
||||
if ($alias)
|
||||
$column_list[] = sprintf('%s as %s', $name, $alias);
|
||||
$column_list[$alias] = sprintf('%s as %s', $name, $alias);
|
||||
else
|
||||
$column_list[] = sprintf('%s', $name);
|
||||
} else {
|
||||
if ($alias)
|
||||
$column_list[] = sprintf('%s as %s', $name, $alias);
|
||||
$column_list[$alias] = sprintf('%s as %s', $name, $alias);
|
||||
else
|
||||
$column_list[] = sprintf('%s', $name);
|
||||
}
|
||||
|
|
@ -697,6 +697,7 @@ class DBPostgresql extends DB
|
|||
|
||||
$condition = $this->getCondition($output);
|
||||
|
||||
$output->column_list = $column_list;
|
||||
if ($output->list_count && $output->page)
|
||||
return $this->_getNavigationData($table_list, $columns, $left_join, $condition,
|
||||
$output);
|
||||
|
|
@ -717,8 +718,6 @@ class DBPostgresql extends DB
|
|||
}
|
||||
}
|
||||
|
||||
$query = sprintf("select %s from %s %s %s", $columns, implode(',', $table_list),
|
||||
implode(' ', $left_join), $condition);
|
||||
|
||||
if (count($output->groups)) {
|
||||
/*
|
||||
|
|
@ -745,19 +744,27 @@ class DBPostgresql extends DB
|
|||
}
|
||||
}
|
||||
|
||||
if($column_list[$gval]) $output->arg_columns[] = $column_list[$gval];
|
||||
|
||||
}
|
||||
$query .= sprintf(' group by %s', implode(',', $group_list));
|
||||
$groupby_query = sprintf(' group by %s', implode(',', $group_list));
|
||||
// var_dump($query);
|
||||
}
|
||||
|
||||
if ($output->order) {
|
||||
foreach ($output->order as $key => $val) {
|
||||
$index_list[] = sprintf('%s %s', $val[0], $val[1]);
|
||||
if(count($output->arg_columns) && $column_list[$val[0]]) $output->arg_columns[] = $column_list[$val[0]];
|
||||
}
|
||||
if (count($index_list))
|
||||
$query .= ' order by ' . implode(',', $index_list);
|
||||
if (count($index_list)) $orderby_query = ' order by ' . implode(',', $index_list);
|
||||
}
|
||||
|
||||
if(count($output->arg_columns))
|
||||
{
|
||||
$columns = join(',',$output->arg_columns);
|
||||
}
|
||||
|
||||
$query = sprintf("select %s from %s %s %s %s", $columns, implode(',', $table_list), implode(' ', $left_join), $condition, $groupby_query.$orderby_query);
|
||||
$query .= (__DEBUG_QUERY__&1 && $output->query_id)?sprintf(' '.$this->comment_syntax,$this->query_id):'';
|
||||
$result = $this->_query($query);
|
||||
if ($this->isError())
|
||||
|
|
@ -787,6 +794,7 @@ class DBPostgresql extends DB
|
|||
{
|
||||
require_once (_XE_PATH_ . 'classes/page/PageHandler.class.php');
|
||||
|
||||
$column_list = $output->column_list;
|
||||
/*
|
||||
// group by 절이 포함된 SELECT 쿼리의 전체 갯수를 구하기 위한 수정
|
||||
// 정상적인 동작이 확인되면 주석으로 막아둔 부분으로 대체합니다.
|
||||
|
|
@ -805,37 +813,26 @@ class DBPostgresql extends DB
|
|||
*/
|
||||
|
||||
// 전체 개수를 구함
|
||||
$count_query = sprintf("select count(*) as count from %s %s %s", implode(',', $table_list),
|
||||
implode(' ', $left_join), $condition);
|
||||
$total_count = $this->getCountCache($output->tables, $condition);
|
||||
if ($total_count === false) {
|
||||
|
||||
$count_query .= (__DEBUG_QUERY__&1 && $output->query_id)?sprintf(' '.$this->comment_syntax,$this->query_id . ' count(*)'):'';
|
||||
$result = $this->_query($count_query);
|
||||
$count_output = $this->_fetch($result);
|
||||
$total_count = (int)$count_output->count;
|
||||
$this->putCountCache($output->tables, $condition, $total_count);
|
||||
}
|
||||
$count_query = sprintf("select count(*) as count from %s %s %s", implode(',', $table_list), implode(' ', $left_join), $condition);
|
||||
$count_query .= (__DEBUG_QUERY__&1 && $output->query_id)?sprintf(' '.$this->comment_syntax,$this->query_id . ' count(*)'):'';
|
||||
$result = $this->_query($count_query);
|
||||
$count_output = $this->_fetch($result);
|
||||
$total_count = (int)$count_output->count;
|
||||
|
||||
$list_count = $output->list_count['value'];
|
||||
if (!$list_count)
|
||||
$list_count = 20;
|
||||
if (!$list_count) $list_count = 20;
|
||||
$page_count = $output->page_count['value'];
|
||||
if (!$page_count)
|
||||
$page_count = 10;
|
||||
if (!$page_count) $page_count = 10;
|
||||
$page = $output->page['value'];
|
||||
if (!$page)
|
||||
$page = 1;
|
||||
|
||||
// 전체 페이지를 구함
|
||||
if ($total_count)
|
||||
$total_page = (int)(($total_count - 1) / $list_count) + 1;
|
||||
else
|
||||
$total_page = 1;
|
||||
if ($total_count) $total_page = (int)(($total_count - 1) / $list_count) + 1;
|
||||
else $total_page = 1;
|
||||
|
||||
// 페이지 변수를 체크
|
||||
if ($page > $total_page)
|
||||
$page = $total_page;
|
||||
if ($page > $total_page) $page = $total_page;
|
||||
$start_count = ($page - 1) * $list_count;
|
||||
|
||||
// list_order, update_order 로 정렬시에 인덱스 사용을 위해 condition에 쿼리 추가
|
||||
|
|
@ -854,20 +851,52 @@ class DBPostgresql extends DB
|
|||
}
|
||||
}
|
||||
|
||||
$query = sprintf("select %s from %s %s %s", $columns, implode(',', $table_list),
|
||||
implode(' ', $left_join), $condition);
|
||||
if (count($output->groups)) {
|
||||
/*
|
||||
var_dump("= column output start = ");
|
||||
var_dump(sizeof ($output->columns) . " = end length == ");
|
||||
var_dump($output->columns);
|
||||
var_dump("= column output end = " . "\n");
|
||||
var_dump($output->groups);
|
||||
var_dump("=== " . "\n");
|
||||
var_dump(debug_backtrace());
|
||||
|
||||
foreach($output->columns as $key => $val) {
|
||||
$name = $val['name'];
|
||||
$alias = $val['alias'];
|
||||
} */
|
||||
$group_list = array();
|
||||
foreach ($output->groups as $gkey => $gval) {
|
||||
foreach ($output->columns as $key => $val) {
|
||||
$name = $val['name'];
|
||||
$alias = $val['alias'];
|
||||
if (trim($name) == trim($gval)) {
|
||||
$group_list[] = $alias;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (count($output->groups))
|
||||
$query .= sprintf(' group by %s', implode(',', $output->groups));
|
||||
if($column_list[$gval]) $output->arg_columns[] = $column_list[$gval];
|
||||
|
||||
if (count($output->order)) {
|
||||
foreach ($output->order as $key => $val) {
|
||||
$index_list[] = sprintf('%s %s', $val[0], $val[1]);
|
||||
}
|
||||
if (count($index_list))
|
||||
$query .= ' order by ' . implode(',', $index_list);
|
||||
$groupby_query = sprintf(' group by %s', implode(',', $group_list));
|
||||
// var_dump($query);
|
||||
}
|
||||
|
||||
if ($output->order) {
|
||||
foreach ($output->order as $key => $val) {
|
||||
$index_list[] = sprintf('%s %s', $val[0], $val[1]);
|
||||
if(count($output->arg_columns) && $column_list[$val[0]]) $output->arg_columns[] = $column_list[$val[0]];
|
||||
}
|
||||
if (count($index_list)) $orderby_query = ' order by ' . implode(',', $index_list);
|
||||
}
|
||||
|
||||
if(count($output->arg_columns))
|
||||
{
|
||||
$columns = join(',',$output->arg_columns);
|
||||
}
|
||||
|
||||
$query = sprintf("select %s from %s %s %s", $columns, implode(',', $table_list), implode(' ', $left_join), $condition);
|
||||
$query = sprintf('%s offset %d limit %d', $query, $start_count, $list_count);
|
||||
$query .= (__DEBUG_QUERY__&1 && $output->query_id)?sprintf(' '.$this->comment_syntax,$this->query_id):'';
|
||||
|
||||
|
|
|
|||
|
|
@ -563,6 +563,7 @@
|
|||
|
||||
$condition = $this->getCondition($output);
|
||||
|
||||
$output->column_list = $column_list;
|
||||
if($output->list_count && $output->page) return $this->_getNavigationData($table_list, $columns, $left_join, $condition, $output);
|
||||
|
||||
// list_order, update_order 로 정렬시에 인덱스 사용을 위해 condition에 쿼리 추가
|
||||
|
|
@ -618,6 +619,7 @@
|
|||
function _getNavigationData($table_list, $columns, $left_join, $condition, $output) {
|
||||
require_once(_XE_PATH_.'classes/page/PageHandler.class.php');
|
||||
|
||||
$column_list = $output->column_list;
|
||||
/*
|
||||
// group by 절이 포함된 SELECT 쿼리의 전체 갯수를 구하기 위한 수정
|
||||
// 정상적인 동작이 확인되면 주석으로 막아둔 부분으로 대체합니다.
|
||||
|
|
@ -637,16 +639,10 @@
|
|||
|
||||
// 전체 개수를 구함
|
||||
$count_query = sprintf("select count(*) as count from %s %s %s", implode(',',$table_list),implode(' ',$left_join), $condition);
|
||||
|
||||
$total_count = $this->getCountCache($output->tables, $condition);
|
||||
|
||||
if($total_count === false) {
|
||||
$count_query .= (__DEBUG_QUERY__&1 && $output->query_id)?sprintf(' '.$this->comment_syntax,$this->query_id . ' count(*)'):'';
|
||||
$result = $this->_query($count_query);
|
||||
$count_output = $this->_fetch($result);
|
||||
$total_count = (int)$count_output->count;
|
||||
$this->putCountCache($output->tables, $condition, $total_count);
|
||||
}
|
||||
$count_query .= (__DEBUG_QUERY__&1 && $output->query_id)?sprintf(' '.$this->comment_syntax,$this->query_id . ' count(*)'):'';
|
||||
$result = $this->_query($count_query);
|
||||
$count_output = $this->_fetch($result);
|
||||
$total_count = (int)$count_output->count;
|
||||
|
||||
$list_count = $output->list_count['value'];
|
||||
if(!$list_count) $list_count = 20;
|
||||
|
|
|
|||
|
|
@ -581,31 +581,30 @@
|
|||
}
|
||||
|
||||
|
||||
$click_count = array();
|
||||
if(!$output->columns) $output->columns = array('*');
|
||||
|
||||
if(!$output->columns) {
|
||||
$columns = '*';
|
||||
} else {
|
||||
$column_list = array();
|
||||
foreach($output->columns as $key => $val) {
|
||||
$name = $val['name'];
|
||||
$alias = $val['alias'];
|
||||
if($val['click_count']) $click_count[] = $val['name'];
|
||||
$column_list = array();
|
||||
foreach($output->columns as $key => $val) {
|
||||
$name = $val['name'];
|
||||
$alias = $val['alias'];
|
||||
if($val['click_count']) $click_count[] = $val['name'];
|
||||
|
||||
if(substr($name,-1) == '*') {
|
||||
$column_list[] = $name;
|
||||
} elseif(strpos($name,'.')===false && strpos($name,'(')===false) {
|
||||
if($alias) $column_list[] = sprintf('%s as %s', $name, $alias);
|
||||
else $column_list[] = sprintf('%s',$name);
|
||||
} else {
|
||||
if($alias) $column_list[] = sprintf('%s as %s', $name, $alias);
|
||||
else $column_list[] = sprintf('%s',$name);
|
||||
}
|
||||
}
|
||||
$columns = implode(',',$column_list);
|
||||
}
|
||||
if(substr($name,-1) == '*') {
|
||||
$column_list[] = $name;
|
||||
} elseif(strpos($name,'.')===false && strpos($name,'(')===false) {
|
||||
if($alias) $column_list[$alias] = sprintf('%s as %s', $name, $alias);
|
||||
else $column_list[] = sprintf('%s',$name);
|
||||
} else {
|
||||
if($alias) $column_list[$alias] = sprintf('%s as %s', $name, $alias);
|
||||
else $column_list[] = sprintf('%s',$name);
|
||||
}
|
||||
}
|
||||
$columns = implode(',',$column_list);
|
||||
|
||||
$condition = $this->getCondition($output);
|
||||
|
||||
$output->column_list = $column_list;
|
||||
if($output->list_count && $output->page) return $this->_getNavigationData($table_list, $columns, $left_join, $condition, $output);
|
||||
|
||||
// list_order, update_order 로 정렬시에 인덱스 사용을 위해 condition에 쿼리 추가
|
||||
|
|
@ -621,17 +620,31 @@
|
|||
}
|
||||
}
|
||||
|
||||
$query = sprintf("select %s from %s %s %s", $columns, implode(',',$table_list),implode(' ',$left_join), $condition);
|
||||
|
||||
if(count($output->groups)) $query .= sprintf(' group by %s', implode(',',$output->groups));
|
||||
if(count($output->groups)){
|
||||
$groupby_query = sprintf(' group by %s', implode(',',$output->groups));
|
||||
if(count($output->arg_columns))
|
||||
{
|
||||
foreach($output->groups as $group)
|
||||
{
|
||||
if($column_list[$group]) $output->arg_columns[] = $column_list[$group];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if($output->order) {
|
||||
foreach($output->order as $key => $val) {
|
||||
$index_list[] = sprintf('%s %s', $val[0], $val[1]);
|
||||
if(count($output->arg_columns) && $column_list[$val[0]]) $output->arg_columns[] = $column_list[$val[0]];
|
||||
}
|
||||
if(count($index_list)) $query .= ' order by '.implode(',',$index_list);
|
||||
if(count($index_list)) $orderby_query = ' order by '.implode(',',$index_list);
|
||||
}
|
||||
|
||||
if(count($output->arg_columns))
|
||||
{
|
||||
$columns = join(',',$output->arg_columns);
|
||||
}
|
||||
|
||||
$query = sprintf("select %s from %s %s %s %s", $columns, implode(',',$table_list),implode(' ',$left_join), $condition, $groupby_query.$orderby_query);
|
||||
// list_count를 사용할 경우 적용
|
||||
if($output->list_count['value']) $query = sprintf('%s limit %d', $query, $output->list_count['value']);
|
||||
|
||||
|
|
@ -660,6 +673,7 @@
|
|||
function _getNavigationData($table_list, $columns, $left_join, $condition, $output) {
|
||||
require_once(_XE_PATH_.'classes/page/PageHandler.class.php');
|
||||
|
||||
$column_list = $output->column_list;
|
||||
/*
|
||||
// group by 절이 포함된 SELECT 쿼리의 전체 갯수를 구하기 위한 수정
|
||||
// 정상적인 동작이 확인되면 주석으로 막아둔 부분으로 대체합니다.
|
||||
|
|
@ -679,14 +693,10 @@
|
|||
|
||||
// 전체 개수를 구함
|
||||
$count_query = sprintf("select count(*) as count from %s %s %s", implode(',',$table_list),implode(' ',$left_join), $condition);
|
||||
$total_count = $this->getCountCache($output->tables, $condition);
|
||||
if($total_count === false) {
|
||||
$count_query .= (__DEBUG_QUERY__&1 && $output->query_id)?sprintf(' '.$this->comment_syntax,$this->query_id . ' count(*)'):'';
|
||||
$this->_prepare($count_query);
|
||||
$count_output = $this->_execute();
|
||||
$total_count = (int)$count_output->count;
|
||||
$this->putCountCache($output->tables, $condition, $total_count);
|
||||
}
|
||||
$count_query .= (__DEBUG_QUERY__&1 && $output->query_id)?sprintf(' '.$this->comment_syntax,$this->query_id . ' count(*)'):'';
|
||||
$this->_prepare($count_query);
|
||||
$count_output = $this->_execute();
|
||||
$total_count = (int)$count_output->count;
|
||||
|
||||
$list_count = $output->list_count['value'];
|
||||
if(!$list_count) $list_count = 20;
|
||||
|
|
@ -716,17 +726,30 @@
|
|||
}
|
||||
}
|
||||
|
||||
$query = sprintf("select %s from %s %s %s", $columns, implode(',',$table_list), implode(' ',$left_join), $condition);
|
||||
|
||||
if(count($output->groups)) $query .= sprintf(' group by %s', implode(',',$output->groups));
|
||||
if(count($output->groups)){
|
||||
$groupby_query = sprintf(' group by %s', implode(',',$output->groups));
|
||||
if(count($output->arg_columns))
|
||||
{
|
||||
foreach($output->groups as $group)
|
||||
{
|
||||
if($column_list[$group]) $output->arg_columns[] = $column_list[$group];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if($output->order) {
|
||||
foreach($output->order as $key => $val) {
|
||||
$index_list[] = sprintf('%s %s', $val[0], $val[1]);
|
||||
if(count($output->arg_columns) && $column_list[$val[0]]) $output->arg_columns[] = $column_list[$val[0]];
|
||||
}
|
||||
if(count($index_list)) $query .= ' order by '.implode(',',$index_list);
|
||||
if(count($index_list)) $orderby_query = ' order by '.implode(',',$index_list);
|
||||
}
|
||||
|
||||
if(count($output->arg_columns))
|
||||
{
|
||||
$columns = join(',',$output->arg_columns);
|
||||
}
|
||||
|
||||
// return 결과물 생성
|
||||
$buff = new Object();
|
||||
$buff->total_count = 0;
|
||||
|
|
@ -736,6 +759,7 @@
|
|||
$buff->page_navigation = new PageHandler($total_count, $total_page, $page, $page_count);
|
||||
|
||||
// 쿼리 실행
|
||||
$query = sprintf("select %s from %s %s %s %s", $columns, implode(',',$table_list),implode(' ',$left_join), $condition, $groupby_query.$orderby_query);
|
||||
$query = sprintf('%s limit %d, %d', $query, $start_count, $list_count);
|
||||
$query .= (__DEBUG_QUERY__&1 && $output->query_id)?sprintf(' '.$this->comment_syntax,$this->query_id):'';
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue