ВЫБЕРИТЕ строки, в которых дата PHP находится МЕЖДУ двумя столбцами дат, используя построитель запросов CodeIgniter.Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 ВЫБЕРИТЕ строки, в которых дата PHP находится МЕЖДУ двумя столбцами дат, используя построитель запросов CodeIgniter.

Сообщение Anonymous »

Я использую методы построения запросов Codeigniter для взаимодействия с моей базой данных MySQL и создаю проект с периодами времени для цен на номера.
Package_ periods
Изображение

Room_package_prices
Изображение

Идентификатор package_id может иметь много периодов, как вы можете видеть в примере с 17.01.08.2017 по 08.08.2017, с 08.10.2017 по 17.08.2017 и т. д.
Для заданного периода поиска (скажем, с 08.02.2017 по 14.08.2017), как я могу найти package_id, который не только превышает период поиска, но и не имеет даже 1 дня за пределами периода поиска?
Я имею в виду, периоды package_id (от и до нескольких строк) должны охватывать ВСЕ дни периода поиска, не оставляя ни единого пробела.
public function getFHotels($checkin = null, $checkout = null, $adults = null, $packageType = null, $package_id = null, $limit, $start, $lang_id)
{
$this->db
->select('DISTINCT(hotels.hotel_id)')
->from('hotels')
->join('rooms', 'rooms.hotel_id=hotels.hotel_id')
->where('rooms.room_active', 1)
->where('hotels.hotel_active', 1)
->limit($limit, $start);

if ($packageType) {
$this->db->where('rooms.room_package_id', $packageType);
}
if ($package_id && $adults) {
// if $package_id is given, do not search for checkin-checkout
$this->db->join('room_package_prices', 'room_package_prices.room_id=rooms.room_id');
$this->db->where('room_package_prices.package_period_id', $package_id);
$this->db->where('room_package_prices.adults', $adults);
$this->db->where('room_package_prices.price>', 0);
} elseif ($checkin && $checkout && $adults) {
// if $checkin and $checkout is given, search for the period_from and period_to
// Here goes my actual question
}

$qry = $this->db->get();
if ($qry->num_rows() > 0)
return $qry->result_array();
return FALSE;
}


Подробнее здесь: https://stackoverflow.com/questions/450 ... niters-que
Ответить

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

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

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

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

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