Присоединение подзапроса Codeigniter - PullRequest
0 голосов
/ 31 декабря 2011

Как мне написать в codeigniter в активной записи следующий запрос?

выберите tbl_list.id, tbl_list_items.name из tbl_list присоединиться к tbl_list_items on tbl_list_items.id = (выберите tbl_list_items.id из tbl_list_items, где list_id = tbl_list.id упорядочить по tbl_list_items.item_no asc LIMIT 1)

Обновление:

Это то, с чем я выступаю, но это не делает работу.

$this->db->select($this->table_list.'.*');
$this->db->from($this->table_list);
$sub = $this->subquery->start_subquery('join','',$this->table_list_items.'.id');
$sub->select('id')->from($this->table_list_items)->where('list_id','tbl_list.id')->order_by($this->table_list_items.'item_no','asc')->limit('1');
$this->subquery->end_subquery('list_items');

Ценю любую помощь. Благодаря.

1 Ответ

1 голос
/ 31 декабря 2011

Просмотрите методы активной записи, доступные вам в CodeIgniter.

Затем просмотрите библиотеку CI, чтобы расширить ее для обработки подзапросов, доступных в CodeIgniter

Существует пошаговое руководство о том, как CI делает это изнутри

Найдена база кода github для реализации подзапросов в CodeIgniter 1.7 и 2.x (см. ссылку)

РЕДАКТИРОВАТЬ:

Пересмотренный код ниже, чтобы помочь.Вы также можете ознакомиться с примерами из 4-й ссылки.

Чтобы воспроизвести то, что вы пытаетесь сделать, код будет похож (это не проверено ... но, надеюсь, направит вас по правильному пути):

$this->db->select('tbl_list.id, tbl_list.names');
$this->db->from('tbl_list');
$sub = $this->subquery->start_subquery('join', 'left', 'tli.id = tbl_list.id');
$sub->select('tbl_list_items.id')->from('tbl_list_items')->where('tbl_list_items.list_id=tbl_list.id ');
$sub->db->order_by('ASC');
$sub->db->limit(1);
$this->subquery->end_subquery('tli');

Ключом этого утверждения является: $ this-> subquery-> end_subquery ('tli'); Что происходит там, это то, что он обрабатывает результат подзапроса как AS tli , чтобы вы могли ссылаться на него в tli.id .

Надеюсь, это помогло!

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