首页 > 解决方案 > 我应该怎么做才能显示来自 2 个或更多不同表的所有数据,我尝试使用 JOIN 但我仍然不明白?

问题描述

我英文不太好,请谅解,我也是第一次用这个,非常感谢^^

我想在 CodeIgniter 中将数据库中的所有数据显示到我的视图中,但问题是,我想显示到我的视图中的数据来自 2 个或更多不同的表,我尝试使用JOIN但我不明白它的含义。我成功地只展示了 1 张桌子,但我不明白如何从 2 张或更多桌子中展示。

我有 2 张桌子:

  1. data_skm_organisasi 表 1
  2. data_skm_kejuaraan 表 2

我想显示上面 2 个表格中的所有数据

这是我的代码,用于显示数据库中我的表中的两个或多个数据及其显示错误

控制器

public function V_home()
{
   $dataOrganisasi = $this->M_main->getSKMorganisasi();  
   $dataSimpanOrganisasi = array();
   $dataSimpanOrganisasi ['organisasi']= $dataOrganisasi;
   $this->load->view('V_mahasiswa',$dataSimpanOrganisasi);
}

模型

function getSKMorganisasi(){
   $query = $this->db->JOIN('data_skm_organisasi','data_skm_kejuaraan');
   $results = $this->db->get();     
   return $query->result_array();
}

看法

<?php foreach ($organisasi as $dataSimpan) { ?>
   <div>
     <?php echo $dataSimpan->Lembaga; ?>
     <?php echo $dataSimpan->tingkatan; ?><br><br>
   </div>
     <?php } ?><br><br>

   <?php foreach ($organisasi as $dataSimpan) { ?>
   <div>
     <?php echo $dataSimpan->jenisKegiatan; ?>
     <?php echo $dataSimpan->tingkatan; ?><br><br>
   </div>
     <?php } ?>

当我尝试运行时出现此错误

发生数据库错误错误号:1064

您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 2 行的 JOIN data_skm_organisasiUSING ( data_skm_kejuaraan)附近使用正确的语法

选择 * 加入data_skm_organisasi使用 ( data_skm_kejuaraan)

文件名:C:/xampp/htdocs/Aplikasi_SKM2/system/database/DB_driver.php

行号:691

标签: phpdatabasecodeigniter

解决方案


您可以连接这两个表并显示其中所有数据的一种方法JOIN是这样的:

SELECT table1.*, table2.* FROM data_skm_organisasi AS table1
LEFT JOIN data_skm_kejuaraan AS table2 ON table1.namaKegiatan = table2.namaKegiatan AND table1.namaMahasiswa AND table2.namaMahasiswa
ORDER BY table1.id ASC

namaMahasiswa这将返回这 2 个表中和具有相同值的所有数据namaKegiatan

请注意:如果您确实使用table1.*并且table2.*您可能无法访问所有数据,因为列将具有相同的名称,因此建议始终指定您需要返回aliases的所有字段并在具有两个表中的名称相同。

前任。SELECT table1.tingkatan, table2.tingkata AS tingkata2 ....

但是您确实应该考虑在查询中添加某种WHERE条件,这样如果您有太多记录,您最终不会浪费太多时间来加载数据。

PS 这是我对您的表结构的最佳估计,因为您没有在这些表上设置适当的关系


推荐阅读