Выбор SQL из двух таблиц возвращает повторяющиеся значения – Codeigniter

Мне нужно получить некоторые данные из двух таблиц. Нет никаких условий. Но мой код возвращает повторяющиеся значения данных. каждая таблица содержит 4 строки

Центры tbl:

centres_tbl

Учебный курс tbl:

tbl_training_course

Вывод:

Просмотреть выходной снимок экрана

Мой код контроллера:

$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; ?> 

Related of "Выбор SQL из двух таблиц возвращает повторяющиеся значения – Codeigniter"

Это нормально из-за неявного присоединения, которое вы сделали! Почему бы вам просто не запросить два запроса, по одному на таблицу, а затем объединить результаты в один массив?

 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 раз, и если вы даже станете отличным, у вас возникнет проблема , Чтобы избежать такой проблемы, вам нужно использовать условие или соединение между двумя таблицами.