Использование Mysql предложения WHERE IN в codeigniter

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

SELECT * FROM myTable 
         WHERE trans_id IN ( SELECT trans_id FROM myTable WHERE code='B') 
         AND code!='B'
 Muhammad Raheel15 июн. 2012 г., 07:47
Вы использовали подзапрос в codeigniter, как я написал
 black_belt15 июн. 2012 г., 08:28
@raheelshan. Не могли бы вы проверить этот пост.stackoverflow.com/q/11045611/1209690 Спасибо :)
 black_belt15 июн. 2012 г., 08:01
Да, мне удалось успешно использовать его несколько минут назад .. :) Спасибо :)
 Muhammad Raheel15 июн. 2012 г., 09:10
хорошо, дайте мне посмотреть, что это говорит

Ответы на вопрос(4)

$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 (& quot; * & quot;); необязательно, когда вы выбираете все столбцы из таблицы

$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();
 13 нояб. 2013 г., 00:41
Это подходит мне идеально, спасибо!

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

Не является активной записью, но является способом codeigniterhttp://codeigniter.com/user_guide/database/examples.html см. раздел Стандартный запрос с несколькими результатами (версия массива)

Решение Вопроса

чтобы сделать это, для этого вам придется взломать 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')

который выполняет запрос.
Смотри это тоже

Как я могу переписать этот SQL в активные записи CodeIgniter?

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

Ваш ответ на вопрос