【问题标题】:Compare three table values and retrieve a value from both the table using codeigniter比较三个表值并使用 codeigniter 从两个表中检索一个值
【发布时间】:2013-06-24 07:57:16
【问题描述】:

我有三张桌子

student_details

   1.ID
   2.studentname
   3.deptname
   4.deptcode

  login_details

   1.id
   2.username
   3.password
   4.deptcode

 dept_details
   1.id
   2.deptcode
   3.deptname

从这些表中,我需要检查 login_details 表中的用户名和密码,并通过检查值作为 student_details.deptcode==login_details.deptcode 和 dept_details.deptcode==student_details.deptcode 来另外从 dept_details 表中检索一个部门名称。这些概念那么我如何在codeigniter中实现这些步骤请帮助某人.. 提前致谢

【问题讨论】:

  • 您应该与login_detailsstudent_details 有关系,连接这三个表的唯一东西是dept_code 我不认为这是一个好的结构。很难从 login_details 获取登录详细信息并将其连接到 student_details,除非您已经知道所需的所有数据的 ID
  • 我在我的本地主机 phpmyadmin 中编写查询,喜欢 "SELECT a.id, a.username, a.deptcode, c.deptname FROM logindetails a, student_details b, deptdetails c WHERE a.deptcode = c. deptcode AND a.deptcode = b.deptcode" 在这里它工作正常。但在 codeigniter 中它不起作用。

标签: php sql codeigniter phpmyadmin


【解决方案1】:

在 codeigniter 中,您可以使用 Active Records 来执行此操作,也可以通过传递您的自定义查询,例如

$username="test";
$password="password";
$query="SELECT dd.deptname,sd.studentname FROM dept_details dd
INNER JOIN login_details ld ON  (dd.deptcode = ld.deptcode)
INNER JOIN student_details sd ON  (ld.deptcode = sd.deptcode)
WHERE ld.username='".$username."' AND ld.password='".$password."' ";
$result=$this->db->query($query)->result();

$this->db->select('dd.deptname,sd.studentname');
$this->db->from('dept_details dd');
$this->db->join('login_details ld', 'dd.deptcode = ld.deptcode');
$this->db->join('student_details sd', 'd.deptcode = sd.deptcode');
$this->db->where('ld.username', $username);
$this->db->where('ld.password', $password);
$result = $this->db->get();

并确保您已在 autoload.php 中加载了 database 库,例如 $autoload['libraries'] = array("database");

这是Active record的帮助 希望有意义

【讨论】:

    【解决方案2】:

    student_detailslogin_details 应该是一个表。一个用户可以有多个登录详细信息吗? @tomexsans 是对的,因为“student_id”是您的唯一 ID,您应该使用该 ID 连接您的表格。

    我在考虑这个结构:

    学生

    student_id
    student_name
    username
    password
    dept_id
    

    dept_details

    dept_id
    dept_code
    dept_name
    

    【讨论】:

    • 感谢您的回复。从这两个表中,我如何编写查询来检索部门名称 ..
    猜你喜欢
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 2019-01-03
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 2016-06-15
    相关资源
    最近更新 更多