Мне нужно получить некоторые данные из двух таблиц. Нет никаких условий. Но мой код возвращает повторяющиеся значения данных. каждая таблица содержит 4 строки
Центры tbl:
Учебный курс tbl:
Вывод:
Мой код контроллера:
$this->load->model("admindata"); $data ['query'] = $this->admindata->getcentrelist(); $this->load->helper('url'); $this->load->view('admin/header'); $this->load->view('admin/training',$data); $this->load->view('admin/footer');
Мой запрос по модели:
public function getcentrelist() { $this->load->database(); $query= $this->db->query('SELECT centre_name,course_name from tbl_training_courses, tbl_traning_centres'); return $query->result(); }
Вид: (training.php)
<?php foreach($query as $row): ?> <tr> <td><?php echo $row->centre_name; ?></td> </tr> <?php endforeach; ?>
Это нормально из-за неявного присоединения, которое вы сделали! Почему бы вам просто не запросить два запроса, по одному на таблицу, а затем объединить результаты в один массив?
public function getcentrelist() { $this->load->database(); $query_courses= $this->db->query('SELECT course_name as name from tbl_training_courses'); $query_centers= $this->db->query('SELECT centre_name as name from tbl_traning_centres'); $courses = $query_courses->result(); $centers = $query_centers->result(); return array_merge($courses,$centers); }
Обратите внимание, что я переименовал поля имя_курса и имя центра в унифицированное имя: «имя», это необходимо для согласованной объединенной таблицы.
Использовать DISTINCT
public function getcentrelist() { $this->load->database(); $query= $this->db->query('SELECT DISTINCT centre_name,course_name from tbl_training_courses, tbl_traning_centres GROUP BY center_name'); return $query->result(); }
или использовать Group By
public function getcentrelist() { $this->load->database(); $query= $this->db->query('SELECT centre_name,course_name from tbl_training_courses, tbl_traning_centres GROUP BY center_name'); return $query->result(); }
Данные возвращаются по вашему запросу, это нормально, потому что вы выбираете одну строку, и вы выбираете все строки второй таблицы, так что, если у вас есть 10 строк во второй строке, вы получите каждое значение 10 раз, и если вы даже станете отличным, у вас возникнет проблема , Чтобы избежать такой проблемы, вам нужно использовать условие или соединение между двумя таблицами.