Generate correct SQL when exporting set of results

This commit is contained in:
Chanaka Indrajith 2012-10-31 22:48:38 +05:30
parent 14e94e282c
commit 2e53dd2b7d

View File

@ -36,34 +36,21 @@ if (! empty($sql_query)) {
// Need to generate WHERE clause?
if (isset($where_clause)) {
// Yes => rebuild query from scratch; this doesn't work with nested
// selects :-(
$sql_query = 'SELECT ';
if (isset($analyzed_sql[0]['queryflags']['distinct'])) {
$sql_query .= ' DISTINCT ';
}
$temp_sql_array = explode("where", strtolower($sql_query));
$sql_query .= $analyzed_sql[0]['select_expr_clause'];
// The fields which is going to select will remain
// as it is regardless of the where clause(s).
// EX :- The part "SELECT `id`, `name` FROM `customers`"
// will remain same when representing the resulted rows
// from the following query,
// "SELECT `id`, `name` FROM `customers` WHERE id NOT IN
// ( SELECT id FROM companies WHERE name LIKE '%u%')"
$sql_query = $temp_sql_array[0];
if (!empty($analyzed_sql[0]['from_clause'])) {
$sql_query .= ' FROM ' . $analyzed_sql[0]['from_clause'];
}
$wheres = array();
if (isset($where_clause) && is_array($where_clause)
&& count($where_clause) > 0
) {
$wheres[] = '(' . implode(') OR (', $where_clause) . ')';
}
if (!empty($analyzed_sql[0]['where_clause'])) {
$wheres[] = $analyzed_sql[0]['where_clause'];
}
if (count($wheres) > 0) {
$sql_query .= ' WHERE (' . implode(') AND (', $wheres) . ')';
// Append the where clause using the primary key of each row
if (is_array($where_clause) && (count($where_clause) > 0)) {
$sql_query .= ' WHERE (' . implode(') OR (', $where_clause) . ')';
}
if (!empty($analyzed_sql[0]['group_by_clause'])) {