2012-06-13 6 views
14

У меня следующий запрос mysql. Не могли бы вы рассказать мне, как написать тот же запрос в Codeigniter?Использование предложения Mysql WHERE IN в codeigniter

SELECT * FROM myTable 
     WHERE trans_id IN (SELECT trans_id FROM myTable WHERE code='B') 
     AND code!='B' 
+0

вы использовали подзапрос в CodeIgniter, как я отправил –

+1

Да, мне удалось использовать его успешно несколько минут назад .. :) Спасибо :) –

+0

@raheelshan. Не могли бы вы проверить этот пост. http://stackoverflow.com/q/11045611/1209690 Спасибо :) –

ответ

25

Вы можете использовать метод sub query для codeigniter, чтобы сделать это для этого, вам придется взломать codeigniter. как это
Перейти системы/базы данных/DB_active_rec.php Удалить публичное или защищенное ключевое слово из этих функций

public function _compile_select($select_override = FALSE) 
public function _reset_select() 

Теперь подзапрос в письменной форме доступной А теперь вот ваш запрос с активной записью

$this->db->select('trans_id'); 
$this->db->from('myTable'); 
$this->db->where('code','B'); 
$subQuery = $this->db->_compile_select(); 

$this->db->_reset_select(); 
// And now your main query 
$this->db->select("*"); 
$this->db->where_in("$subQuery"); 
$this->db->where('code !=', 'B'); 
$this->db->get('myTable'); 

И все готово. Ура !!!
Примечание: При использовании вложенных запросов вы должны использовать

$this->db->from('myTable') 

вместо

$this->db->get('myTable') 

, который запускает запрос.
Часы это тоже

How can I rewrite this SQL into CodeIgniter's Active Records?

Примечание: В Codeigntier 3 эти функции уже общественности, так что вам не нужно, чтобы взломать их.

0

попробовать это:

return $this->db->query(" 
    SELECT * FROM myTable 
    WHERE trans_id IN (SELECT trans_id FROM myTable WHERE code='B') 
    AND code!='B' 
    ")->result_array(); 

не участвует запись, но путь http://codeigniter.com/user_guide/database/examples.html CodeIgniter в см Стандартный запрос с несколькими Результаты (массив Version) раздела

7

Попробуйте это:

$this->db->select("*"); 
$this->db->where_in("(SELECT trans_id FROM myTable WHERE code = 'B')"); 
$this->db->where('code !=', 'B'); 
$this->db->get('myTable'); 

Примечание: $ this-> db-> select ("*"); является необязательным, когда вы выбираете все столбцы из таблицы

15
$data = $this->db->get_where('columnname',array('code' => 'B')); 
$this->db->where_in('columnname',$data); 
$this->db->where('code !=','B'); 
$query = $this->db->get(); 
return $query->result_array(); 
+1

Это прекрасно подходит мне, спасибо! – Nebri

Смежные вопросы