Добрый день. Есть функция которая опрашивает три таблицы из базы данных, выглядит так: (запросы не полные, просто пример) PHP: // первый запрос $this->db->select(); $this->db->where("Date BETWEEN DATEADD(hour,".$a.", DATEDIFF(dd, 0, GETDATE())) AND DATEADD(hour,".$b.", DATEDIFF(dd, 0, GETDATE()))"); if($checkPlanDowntime[0] === 1){ $this->db->where("Date NOT BETWEEN '".$checkPlanDowntime[1]."' AND DATEADD(hour, 19, DATEDIFF(dd, 0, GETDATE()))", NULL, FALSE); }else if($notBetween !== null){ foreach ($notBetween as $value){ $this->db->where("Date NOT BETWEEN '".date('Y-d-m H:i:s', strtotime($value['Start_date']))."' AND '".date('Y-d-m H:i:s', strtotime($value['End_date']))."'", NULL, FALSE); } } $query = $this->db->get('database'); //второй запрос $this->db->select(); $this->db->where("Date BETWEEN DATEADD(hour,".$a.", DATEDIFF(dd, 0, GETDATE())) AND DATEADD(hour,".$b.", DATEDIFF(dd, 0, GETDATE()))"); $query1 = $this->db->get('database'); //третий запрос $this->db->select(); $this->db->where("Date BETWEEN DATEADD(hour,".$a.", DATEDIFF(dd, 0, GETDATE())) AND DATEADD(hour,".$b.", DATEDIFF(dd, 0, GETDATE()))"); $query2 = $this->db->get('database'); return [$query->result_array(), $query2->result_array(), $query2->result_array()]; Код получился громоздким. Меня смущает вот это вот дублирование на всех трех запросах: PHP: // это есть везде $this->db->where("Date BETWEEN DATEADD(hour,".$a.", DATEDIFF(dd, 0, GETDATE())) AND DATEADD(hour,".$b.", DATEDIFF(dd, 0, GETDATE()))"); //это надо добавить на остальные два запроса if($checkPlanDowntime[0] === 1){ $this->db->where("Date NOT BETWEEN '".$checkPlanDowntime[1]."' AND DATEADD(hour, 19, DATEDIFF(dd, 0, GETDATE()))", NULL, FALSE); }else if($notBetween !== null){ foreach ($notBetween as $value){ $this->db->where("Date NOT BETWEEN '".date('Y-d-m H:i:s', strtotime($value['Start_date']))."' AND '".date('Y-d-m H:i:s', strtotime($value['End_date']))."'", NULL, FALSE); } } Можно ли убрать как то это дублирование, засунуть в функцию например? --- Добавлено --- Чтобы код выглядел как то так: PHP: $this->db->select(); $this->beetwen(); $query = $this->db->get('database'); //второй запрос $this->db->select(); $this->beetwen(); $query1 = $this->db->get('database'); //третий запрос $this->db->select(); $this->beetwen(); $query2 = $this->db->get('database'); return [$query->result_array(), $query2->result_array(), $query2->result_array()]; public function beetwen(){ // перенести все сюда }
@abrdabr Нет, я думал можно как то код уменьшить, написал уже как есть, все работает Пользуюсь mssql только я и codeigniter.
@Artur_hopf тогда тупо задать переменной значение типа $a="date choto...was long"; query("$a real_query"); --- Добавлено --- но это тупо...