Intereting Posts
Установка переменной в оператор, выполняющий ее Выполнить функцию PHP из изображения события OnClick poedit обходной путь для динамического gettext Новый статус не отображается в списке заказов Считать количество значений в массиве с заданным значением openssl_verify (): указанный ключевой параметр не может быть принудительно введен в открытый ключ для файла .pem Скопировать массив PHP в массив javascript Сообщение об ошибке при отправке формы PHP с пустыми полями Вызов неопределенного метода Illuminate \ Database \ Query \ Builder :: lists () при посеве после обновления до Laravel 5.3 PHP Strip_tags для div с определенным идентификатором? drupal_http_request возвращает код ошибки Предупреждение: imagettftext () : Не удалось найти / открыть шрифт в /home/a2424901/public_html/index.php в строке 35 Как использовать echo в php-массиве для возврата в виде строки Paypal IPN не вызывает проблему Как продлить срок действия токена с момента отмены офлайн_access

Как вставить INNER JOIN 3 таблицы с помощью CodeIgniter

Может ли кто-нибудь сказать мне, как присоединиться к 3 таблице с php? пример

SELECT FROM table1, table2,table on INNERJOIN ------------------- 

пусть у меня 3 таблицы (таблица вопросов, таблица ответов и таблица категорий) Вот пример формы моей веб-страницы.

 Time remaining 30 minutes(I will get "30 minutes" form Category table) 1. Question (from question table) 2. answer (from answer table) 

Я не знаю, как соединить 3 таблицы.

это должно быть так,

 $this->db->select('*'); $this->db->from('table1'); $this->db->join('table2', 'table1.id = table2.id'); $this->db->join('table3', 'table1.id = table3.id'); $query = $this->db->get(); 

в соответствии с активной картой записей CodeIgniters

Я считаю, что с использованием активной структуры записи CodeIgniters вы просто использовали бы два заявления о соединении один за другим.
например:

 $this->db->select('*'); $this->db->from('table1'); $this->db->join('table1', 'table1.id = table2.id'); $this->db->join('table1', 'table1.id = table3.id'); $query = $this->db->get(); 

Попробуйте и посмотрите, как это происходит.

Я создал функцию для получения массива со значениями полей и объединения. Это относится к модели:

  public function GetDataWhereExtenseJoin($table,$fields,$data) { //pega os campos passados para o select foreach($fields as $coll => $value){ $this->db->select($value); } //pega a tabela $this->db->from($table); //pega os campos do join foreach($data as $coll => $value){ $this->db->join($coll, $value); } //obtem os valores $query = $this->db->get(); //retorna o resultado return $query->result(); } 

Это происходит в контроллере:

 $data_field = array( 'NameProduct' => 'product.IdProduct', 'IdProduct' => 'product.NameProduct', 'NameCategory' => 'category.NameCategory', 'IdCategory' => 'category.IdCategory' ); $data_join = array ( 'product' => 'product_category.IdProduct = product.IdProduct', 'category' => 'product_category.IdCategory = category.IdCategory', 'product' => 'product_category.IdProduct = product.IdProduct' ); $product_category = $this->mmain->GetDataWhereExtenseJoin('product_category', $data_field, $data_join); 

результат:

 echo '<pre>'; print_r($product_category); die; 

Я думаю, что в CodeIgniter лучше использовать ActiveRecord, как написано выше. Еще одна вещь: вы можете использовать цепочку методов в AR:

 $this->db->select('*')->from('table1')->join('table2','table1.id=table2.id')->... 

Для выполнения чистых операторов SQL (я не знаю о FRAMEWORK-CodeIGNITER !!!) вы можете использовать SUB QUERY! Синтаксис будет следующим:

SELECT t1.id FROM example t1 INNER JOIN (выберите id из (example2 t1 join example3 t2 on t1 . id = t2 . id )) как t2 ON t1.id = t2.id;

Надеюсь, ты получишь мою точку!

вы можете модифицировать свою кодировку следующим образом:

  $this->db->select('a.nik,b.nama,a.inv,c.cekin,c.cekout,a.tunai,a.nontunai,a.id'); $this->db->select('DATEDIFF (c.cekout, c.cekin) as lama'); $this->db->select('(DATEDIFF (c.cekout, c.cekin)*c.total) as tagihan'); $this->db->from('bayar as a'); $this->db->join('pelanggan as b', 'a.nik = b.nik'); $this->db->join('pesankamar_h as c', 'a.inv = c.id'); $this->db->where('a.user_id',$id); $query = $this->db->get(); return $query->result(); 

я надеюсь, что вы можете решить свой SQL

 function fetch_comments($ticket_id){ $this->db->select('tbl_tickets_replies.comments, tbl_users.username,tbl_roles.role_name'); $this->db->where('tbl_tickets_replies.ticket_id',$ticket_id); $this->db->join('tbl_users','tbl_users.id = tbl_tickets_replies.user_id'); $this->db->join('tbl_roles','tbl_roles.role_id=tbl_tickets_replies.role_id'); return $this->db->get('tbl_tickets_replies'); } 
 $this->db->select('*'); $this->db->from('table1'); $this->db->join('table2', 'table1.id = table2.id', 'inner'); $this->db->join('table3', 'table1.id = table3.id', 'inner'); $this->db->where("table1", $id ); $query = $this->db->get(); 

Где вы можете указать, какой идентификатор следует просмотреть или выбрать в определенной таблице. Вы также можете выбрать, какую часть соединения оставить левой, правой, внешней, внутренней, левой и правой внешними по третьему параметру метода соединения.