gpt4 book ai didi

php - 使用多个连接 codeigniter

转载 作者:行者123 更新时间:2023-11-29 23:31:34 28 4
gpt4 key购买 nike

我正在开发一个学术 CMS,我必须显示使用多个联接从 5 个表中提取的查询结果。我没有得到所需的结果。以下是表架构:

类别

class_id    class_year  class_semester  class_course    class_status
1 2014 6 5 1
2 2014 6 3 1
3 2014 6 1 1
4 2014 6 2 1
5 2014 6 6 1

这里,class_coursecourse表中的外键,为course_id

类(class)学生

class_student_id    class_id    student_id  class_marks
1 1 s-14-1 5
2 2 s-14-1 2
3 2 s-14-2 0

类(class)

course_id   course_code course_name             course_credit
1 MT-001 Calculus I 3
2 MT-002 Calculus II 3
3 CS-001 Computer Programming 4
4 CS-002 Computer Fundamental 4
5 MG-001 Fundamental of Management 3
6 CS-098 Advance Programming 4

类(class)优惠

co_id   co_semester course_code
1 1 MT-001
2 1 CS-002
3 1 MG-001
4 1 CS-001
5 2 CS-098
6 2 MT-002

这里,co_semester显示这门类(class)是为哪个学期的学生开设的,假设为1、2、3、4等。

类(class)先决条件

cp_id   course_id   prereq_id
1 6 3
2 2 1

这里,course_idprereq_idcourse表中的外键,如course_id

现在,所需的查询输出基于以下条款/条件:

显示所有处于事件状态的类 (class_status=1) 和...

  1. 没有任何先修类(class)(class_coursecourse_prevention 表进行比较),并且之前从未学习过 (class_student.class_id) > 应该不可用)
  2. 没有先修类(class)但学习过但不及格,现在重新安排类(class)学习
  3. 有先修类(class),但学生已通过先修类(class) (class_student.class_marks > 50)

这是所需输出的示例

year semester course_code course_name                   course_credit
2014 6 MG-001 Fundamental of Management 3
2014 6 CS-001 Computer Programming 4
2014 6 MT-001 Calculus I 3

这里 MG-001、CS-001 和 MT-001 没有先决条件,之前没有学习过,所以必须向学生展示。

来自类表

CS-0098 有一个先修类(class),CS-001 计算机编程,之前没有学过,所以不显示 CS-0098,而是显示 CS-001 计算机编程

同样:

MT-002 具有先修类(class) MT-001,该类(class)已被研究但未通过。因此,不显示 MT-002,而是显示 MT-001。

这是我用来生成结果的查询,但产生了错误的结果:

SELECT 
cl.class_id,cr.course_id,cr.course_code,cr.course_name,cr.course_credit
FROM class cl
LEFT JOIN course cr
ON cl.class_course=cr.course_id
LEFT JOIN course_offer co
ON co.course_code=cr.course_code
LEFT JOIN class_student cs
ON cl.class_id=cs.class_id
AND cs.student_id='S-14-1'
AND cl.class_status=1
AND co.co_semester<=2
WHERE
cs.class_id IS NULL

这是查询输出:

class_id    course_id   course_code course_name           course_credit
3 1 MT-001 Calculust 1 3
4 2 MT-002 Calculus 2 3
5 6 CS-098 Advance Programming 4

此处,微积分 I 和微积分 II 均显示,这对于学生来说不应该是一个学期的情况,因为学生一次只能学习一门课。

最佳答案

这就是我为连接三个表所做的事情,您可能会从这段代码中得到一些想法。

$this->db->select(array('u.name', 'u.companyname','i.phone','i.address','u.email','i.state','i.city','i.pincode','i.area','i.description','i.image', 'c.name AS categoryname'));
$this->db->from('tbl_user as u');
$this->db->join('tbl_userinfo as i', 'i.user_id = i.user_id');
$this->db->join ('tbl_category as c', 'c.category_id = i.service_category');
$this->db->group_by(array('u.user_id'));
$this->db->where(array('u.group_id' => 16));
$query = $this->db->get ();
return $query->result();

关于php - 使用多个连接 codeigniter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26542151/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com