Ошибка запроса Codeigniter: «В агрегированном запросе без GROUP BY выражение № 1 списка SELECT содержит неагрегированныйPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Ошибка запроса Codeigniter: «В агрегированном запросе без GROUP BY выражение № 1 списка SELECT содержит неагрегированный

Сообщение Anonymous »

Мое сообщение об ошибке в платформе codeigniter:
Произошла ошибка базы данных
Error Number: 1140

In aggregated query without GROUP BY, expression #1 of SELECT list contains nonaggregated column 'hms.rooms.id'; this is incompatible with sql_mode=only_full_group_by

SELECT `rooms`.*, count(room_no) as total_rooms FROM `rooms` WHERE `room_type_id` = '10'

Filename: D:/Installed_Apps/OpenServer/OpenServer/domains/hms.loc/system/database/DB_driver.php

Line Number: 691

Почему возникает такая ошибка и как ее устранить? В чем может быть проблема в коде?
В этих функциях что-то не так или всё нормально?
function check_availability($check_in, $check_out, $adults, $kids, $room_type_id)
{
$query = '?date_from='.$check_in.'&date_to='.$check_out.'&adults='.$adults.'&kids='.$kids.'&room_type=';
$CI =& get_instance();
if ($check_in == $check_out) {
$check_out = date('Y-m-d', strtotime($check_out . '+ 1 day'));
}

$CI->db->where('id', 1);
$settings = $CI->db->get('settings')->row_array();

$CI->db->where('id', $room_type_id);
$CI->db->select('room_types.*,base_price as price');
$room_type = $CI->db->get('room_types')->row_array();
// echo ''; print_r($room_type); die;

$CI->db->where('room_type_id', $room_type_id);
$CI->db->select('rooms.*,count(room_no) as total_rooms');
$rooms = $CI->db->get('rooms')->row_array();
$total_rooms = $rooms['total_rooms'];
// echo ''; print_r($rooms); die;
$begin = new DateTime($check_in);
$end = new DateTime($check_out);

$interval = DateInterval::createFromDateString('1 day');
$period = new DatePeriod($begin, $interval, $end);

foreach ($period as $dt) {
$date = $dt->format( "Y-m-d" );
$dayno = $dt->format("N");
$day = $dt->format("D");
$day = strtolower($day);
// echo $date;die;
// check for room block period

if ($date >= $settings['room_block_start_date'] && $date session->set_flashdata('error', $block_message);
redirect('');
}
$CI->db->where('O.room_type_id', $room_type_id);
$CI->db->where('R.date', $date);
$CI->db->select('R.*,');
$CI->db->join('orders O', 'O.id = R.order_id', 'LEFT');
$orders = $CI->db->get('rel_orders_prices R')->result_array();
// echo ''; print_r($orders); die;
// echo $total_rooms;die;
if ($total_rooms > 0) {
//echo count($orders); die;
if (count($orders) >= $total_rooms) {
$CI->session->unset_userdata('booking_data');
$CI->session->unset_userdata('coupon_data');
$CI->session->set_flashdata('error', "Sorry.. This Dates Between Rooms Not Available Please Try With Another Date Or Room");
redirect('front/book/index' . $query);
} else {
continue; // continue loop
}
} else {
$CI->session->unset_userdata('booking_data');
$CI->session->unset_userdata('coupon_data');
$CI->session->set_flashdata('error', "Sorry.. This Dates Between Rooms Not Available Please Try With Another Date Or Room");
redirect('front/book/index' . $query);
}
}
return;
}

function check_availability_ajax($check_in, $check_out, $adults, $kids, $room_type_id)
{
$query = '?date_from=' . $check_in . '&date_to=' . $check_out . '&adults=' . $adults . '&kids=' . $kids . '&room_type=';
$CI =& get_instance();
if ($check_in == $check_out) {
$check_out = date('Y-m-d', strtotime($check_out . '+ 1 day'));
}
$CI->db->where('id', 1);
$settings = $CI->db->get('settings')->row_array();

$CI->db->where('id', $room_type_id);
$CI->db->select('room_types.*,base_price as price');
$room_type = $CI->db->get('room_types')->row_array();
// echo ''; print_r($room_type); die;

$CI->db->where('room_type_id', $room_type_id);
$CI->db->select('rooms.*,count(room_no) as total_rooms');
$rooms = $CI->db->get('rooms')->row_array();
$total_rooms = $rooms['total_rooms'];
// echo ''; print_r($rooms);die;
$begin = new DateTime($check_in);
$end = new DateTime($check_out);

$interval = DateInterval::createFromDateString('1 day');
$period = new DatePeriod($begin, $interval, $end);

foreach ($period as $dt) {
$date = $dt->format("Y-m-d");
$dayno = $dt->format("N");
$day = $dt->format("D");
$day = strtolower($day);

if ($date >= $settings['room_block_start_date'] && $date db->where('O.room_type_id', $room_type_id);
$CI->db->where('R.date', $date);
$CI->db->select('R.*,');
$CI->db->join('orders O', 'O.id = R.order_id', 'LEFT');
$orders = $CI->db->get('rel_orders_prices R')->result_array();
// echo $total_rooms; die;
if ($total_rooms > 0) {
if (count($orders) > $total_rooms) {
$CI->session->unset_userdata('booking_data');
$CI->session->unset_userdata('coupon_data');
return 'Sorry.. This Dates Between Rooms Not Available Please Try With Another Date Or Room';
} else {
continue; // continue loop
}
} else {
$CI->session->unset_userdata('booking_data');
$CI->session->unset_userdata('coupon_data');
return 'Sorry.. This Dates Between Rooms Not Available Please Try With Another Date Or Room';
}
}
return 1;
}

Вот код моего контроллера Book.php, в котором я использую эти функции:
function index()
{
// echo ''; print_r($_GET);
// check availbilty
// get_invoice_number();
$this->session->unset_userdata('booking_data');
$this->session->unset_userdata('coupon_data');
$data['page_title'] = lang('make_reservation');
$data['meta_description'] = $this->setting->meta_description;
$data['meta_keywords'] = $this->setting->meta_keywords;
$data['banners'] = $this->homepage_model->get_banners();
$data['testimonials'] = $this->homepage_model->get_testimonials(); // get 6 testimonials
$data['room_types'] = $this->homepage_model->get_room_types_all();
$data['taxes'] = $this->homepage_model->get_taxes();
if (!empty($_GET['room_type'])) {
$data['services'] = $this->homepage_model->get_paid_services($_GET['room_type']);
}
// echo ''; print_r($data['services']);
if (empty($_GET['room_type'])) {
$this->render('book/room_types', $data);
} else {
check_availability($_GET['date_from'], $_GET['date_to'], $_GET['adults'], $_GET['kids'], $_GET['room_type']);

$data['room_type'] = $this->homepage_model->get_room_type($_GET['room_type']);

$this->render('book/view', $data);
}
}


Подробнее здесь: https://stackoverflow.com/questions/467 ... ssion-1-of
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»