У меня есть этот следующий запрос для CodeIgniter:CodeIgniter - Группировка, где положение
$q = $this->db->where('(message_from="'.$user_id.'" AND message_to="'.$this->auth_model->userdata['user_id'].'")')
->or_where('(message_from="'.$this->auth_model->userdata['user_id'].'" AND message_to="'.$user_id.'")')
->get('messages');
Я хочу, чтобы написать этот запрос с полностью активной записью.
Я пытался что-то вроде этого:
$from_where = array('message_from'=>$user_id, 'message_to'=>$this->auth_model->userdata['user_id']);
$to_where = array('message_from'=>$this->auth_model->userdata['user_id'],'message_to'=>$user_id);
$q = $this->db->where($from_where)
->or_where($to_where)
->get('messages');
die($this->db->last_query());
Приведенный выше код производит этот запрос:
SELECT * FROM (`messages`) WHERE `message_from` = '2' AND `message_to` = '1' OR `message_from` = '1' OR `message_to` = '2'
Но это то, что я хочу, чтобы произвести:
SELECT * FROM (`messages`) WHERE (message_from="2" AND message_to="1") OR (message_from="1" AND message_to="2")
Есть аналогичные вопросы here и here, но thosedid не обеспечивают реального решения для меня.
Как это возможно, Если нет через основные библиотеки, есть ли расширение, которое позволяет записывать такие запросы?
Спасибо,
Спасибо, я также подумал об использовании подзапросов тогда, но отказался от этого из-за проблем со скоростью. Будет ли использование подзапросов замедлять процесс? – Arda
это я не тестировал, пытаюсь использовать подзапросы, где весь запрос требуется только там, где условие я еще не тестировал. While подзапрос зависит от того, что он замедлит процесс, когда соединение будет выполняться быстрее –
см. Правки сделал это успешно –