Как я могу оптимизировать этот сырой SQL и, возможно, реализовать его через CodeIgniter? - PullRequest
0 голосов
/ 19 сентября 2011

Прошло много времени с тех пор, как я написал сырой SQL, я надеялся, что кто-нибудь сможет помочь мне оптимизировать этот SQL-запрос, чтобы он работал как с MySQL, так и с PostgreSQL.

Я бы тожечтобы реализовать это через CodeIgniter (2.x) с помощью ActiveRecord, любая помощь / совет?

       SELECT *
     FROM notaries, contact_notaries
    WHERE notaries.id = contact_notaries.notary_id
AND WHERE (   contact_notaries.city LIKE %$criteria%
           OR contact_notaries.state LIKE %$criteria
           OR contact_notaries.address LIKE %$criteria%)

Спасибо!

Ответы [ 2 ]

0 голосов
/ 20 сентября 2011

Используя запрос a1ex07:

SELECT [field_list]
FROM notaries
INNER JOIN contact_notaries ON (notaries.id = contact_notaries.notary_id)
WHERE ( contact_notaries.city LIKE '%$criteria%'
OR contact_notaries.state LIKE '%$criteria'
OR contact_notaries.address LIKE '%$criteria%')

Активная запись:

$this->db->select(); // Leave empty to select all fields
$this->db->join('contact_notaries', 'notaries.id = contact_notaries.notary_id', 'inner');
$this->db->like('contact_notaries.city', 'criteria');
$this->db->like('contact_notaries.state', 'criteria');
$this->db->like('contact_notaries.address', 'match');
$results = $this->db->get('notaries');

Чтобы указать список полей, вы можете сделать $this->db->select('field_1, field_2, ...');.

http://codeigniter.com/user_guide/database/active_record.html

0 голосов
/ 19 сентября 2011
  1. Каждый запрос может содержать только одно предложение WHERE (вам не нужно второе)
  2. Гораздо лучше поместить условие соединения в JOIN, а не WHERE.
  3. Вы уверены, что вам действительно нужны все столбцы из 2 таблиц (*)?
    Так что я бы рефакторинг его на

SELECT [field_list]<br> FROM notaries<br> INNER JOIN contact_notaries ON (notaries.id = contact_notaries.notary_id)<br> WHERE ( contact_notaries.city LIKE '%$criteria%'<br> OR contact_notaries.state LIKE '%$criteria'<br> OR contact_notaries.address LIKE '%$criteria%')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...