MySQL запрос в codeigniter ничего не возвращает - PullRequest
0 голосов
/ 27 апреля 2018
SELECT * 
FROM fx_dirprocess 
WHERE `pro_id` IN (SELECT MAX(`pro_id`) FROM fx_dirprocess GROUP BY name) 
  AND `co_id`=$company;

Как построить этот запрос в codeigniter

После того, как я пытался и не использовал:

первый вариант

$this->db->select('*')->from('fx_dirprocess');
$this->db->where('`pro_id` IN (SELECT MAX(`pro_id`) 
                               FROM `fx_dirprocess`  
                               GROUP BY `name`,’co_id’,$company)’, NULL, FALSE);

второй вариант

$this->db->select_max(‘pro_id’)->group_by(‘name’);
$where_clause = $this->db->get_compiled_select('fx_dirprocess');


$this->db->select('*');
$this->db->from('fx_dirprocess');
$this->db->where("`pro_id`  IN ($where_clause)", NULL, co_id,$company);

Ответы [ 3 ]

0 голосов
/ 28 апреля 2018

Вы передаете GROUP BY для выбора значения MAX, оно не даст точного значения. Вам нравится следовать

$sql_query = "SELECT * FROM `fx_dirprocess` WHERE `pro_id` IN (SELECT MAX(`pro_id`) FROM `fx_dirprocess`) AND `co_id` = '{$company}'";
$query = $this->db->query($sql_query);
return ($query->num_rows() > 1) ? $query->row() : $query->result();
0 голосов
/ 28 апреля 2018

@ Теджасвини, пожалуйста, проверьте код ниже, надеюсь, это поможет.

// make A subquery :-
$this->db->select_max('pro_id')->from('fx_dirprocess')->group_by('name');
$subQuery =  $this->db->get_compiled_select();

// Now the main query is :-
$this->db->select('*')->from('fx_dirprocess');
$this->db->where("pro_id IN ($subQuery)", NULL, FALSE);
$this->db->get()->result();

Спасибо! * * 1004

0 голосов
/ 27 апреля 2018

Чтобы получить защиту от Querybuilder CI, вы можете сделать это, используя get_compiled_select

следующее должно работать

$query = $this->db
    ->select('*')
    ->from('fx_dirprocess')
    ->where('pro_id IN ('.$this->db->select_max('pro_id')->from('fx_dirprocess')->group_by('name')->get_compiled_select().')', NULL, false)
    ->where('co_id', $company)
    ->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...