2016-11-17 3 views
0

У меня возникла проблема с преобразованием приведенного ниже кода в код моей модели в рамках codeigniter.Оператор объединения Codeigniter с заявлением о соединении

SELECT mt_prs_groups.groupId, mt_prs_groups.groupName, mt_prs_administrators.administratorId 
FROM mt_prs_status INNER JOIN (mt_prs_administrators INNER JOIN mt_prs_groups ON mt_prs_administrators.administratorId = mt_prs_groups.administratorId) ON (mt_prs_status.statusId = mt_prs_groups.statusId) AND (mt_prs_status.statusId = mt_prs_administrators.statusId) 
WHERE (((mt_prs_status.status)="Active") AND ((mt_prs_administrators.administratorId)=3)) OR (((mt_prs_administrators.administratorId)=4)); 

На модели я перевел это

$this->db->select('mt_prs_groups.groupId, mt_prs_groups.groupName'); 
$this->db->from('mt_prs_status'); 
$this->db->join('mt_prs_administrators', 'inner'); 
$this->db->join('mt_prs_groups', 'mt_prs_administrators.administratorId = mt_prs_groups.administratorId AND mt_prs_status.statusId = mt_prs_administrators.statusId', 'inner'); 
$this->db->where('mt_prs_status.status="Active"'); 
$this->db->where('mt_prs_administrators.administratorId=3'); 
$this->db->or_where('mt_prs_administrators.administratorId=4'); 

Это дает мне ошибку ниже

Номер ошибки: 1054

Неизвестный столбец 'внутренний' в " из статьи '

SELECT mt_prs_groups. groupId, mt_prs_groups. groupName ОТ mt_prs_status РЕГИСТРИРУЙТЕСЬ mt_prs_administrators ИСПОЛЬЗОВАНИЕ (inner) ВНУТРЕННИЙ РЕГИСТРИРУЙТЕСЬ mt_prs_groups ON mt_prs_administrators. administratorId = mt_prs_groups. administratorId И mt_prs_status. statusId = mt_prs_administrators. statusId ГДЕ mt_prs_status. status = "Активный" И mt_prs_administrators. administratorId = 3 ИЛИ mt_prs_administrators. administratorId = 4

Запрос выполняется хорошо, когда я помещаю его непосредственно в mysql, но не работает в кодеригенере. Вопрос внутреннее соединение зависит от другого внутреннего соединения

ответ

1

Пожалуйста, попробуйте этот .Я попробовал это в CodeIgniter

$this->db->select('mt_prs_groups.groupId, mt_prs_groups.groupName'); 
$this->db->from('mt_prs_status'); 
$this->db->join('mt_prs_administrators', 'mt_prs_status.statusId = mt_prs_administrators.statusId','inner'); 
$this->db->join('mt_prs_groups', 'mt_prs_administrators.administratorId = mt_prs_groups.administratorId', 'inner'); 
$this->db->where('mt_prs_status.status="Active"'); 
$this->db->where('mt_prs_administrators.administratorId=3'); 
$this->db->or_where('mt_prs_administrators.administratorId=4'); 
+0

Это сделало это для меня ... большое вам спасибо за это. Я вижу, где я ошибся с моим запросом –

+0

Удовольствие мое :) –

0

Пожалуйста, попробуйте этот формат

$this->db->select('tbl_tasks.task_id,tbl_tasks.task, tbl_assign_task.user_id'); 
     $this->db->from(TBL_TASKS); 
     $this->db->join(TBL_ASSIGN_TASK, 'tbl_tasks.task_id = tbl_assign_task.task_id'); 
     $this->db->where('tbl_assign_task.is_deleted', 0); 
     $this->db->where('tbl_assign_task.user_id', $userId); 
     $query = $this->db->get(); 
+0

вещь является объединение в рамках объединения. 'mt_prs_status' присоединяется к другому объявлению объединения –

0

В этой строке - «$ this-> db-> Join ('mt_prs_administrators', 'внутренний'); " вы не определяете условие присоединения, поэтому вы получаете ошибку, потому что формат соединения в CI равен $ this-> db-> join ('table_name', 'имя столбца, в котором мы применяем объединение', ' тип соединения ');

+0

Проблема заключается в том, как написать этот запрос в codeigniter. «Mt_prs_status» присоединяется к другому объявлению объединения: «(mt_prs_administrators INNER JOIN mt_prs_groups ON mt_prs_administrators.administratorId) ON (mt_prs_status.statusId = mt_prs_groups.statusId) AND (mt_prs_status.statusId = mt_prs_administrators.statusId)' и в этом втором заявление является объединением. Поэтому проблема не в персидстве ошибок, а в том, как я могу это сделать. –

+0

Пожалуйста, посмотрите заявление и попробуйте записать его в codeigniter –

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

  • Нет связанных вопросов^_^