我必须从两个表中检索一些所有数据。没有条件。但我的代码返回重复的数据值。 每个表包含4行
中心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; ?>
答案 0 :(得分:2)
这是正常的,因为你做了隐式连接!为什么不简单地请求两个查询,每个表一个,然后将结果合并到一个数组中?
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);
}
请注意,我已将字段course_name和中心名称重命名为统一名称:“name”,这是一个连贯的合并表所必需的。
答案 1 :(得分:1)
使用 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();
}
答案 2 :(得分:0)
您的查询返回的数据是正常的,因为您选择一行并且您获取第二个表的所有行,所以如果您在第二行中有10行,您将获得每个值10次,如果您甚至放不同,您将得到一个问题。要避免这样的问题,您需要在两个表之间使用条件或连接。