[英]using multiple joins codeigniter
我正在使用学术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_course
是course
表中的外键,如course_id
班级学生
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
课程
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
course_offer
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
显示该课程是为学期要求为1、2、3、4等的学生提供的。
course_prerequisite
cp_id course_id prereq_id
1 6 3
2 2 1
在这里, course_id
和prereq_id
是course
表中的外键,作为course_id
现在,所需的查询输出基于以下条款/条件:
显示所有活动的类( class_status=1
)和...
class_course
与course_prerequisite
表进行比较)并且以前从未学习过( class_student.class_id
应该不可用) 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具有先决条件类CS-001计算机编程,以前没有研究过,因此请不要显示CS-0098,而要显示CS-001计算机编程
类似地:
MT-002具有先决条件类MT-001,该类已研究但失败。 因此,不要显示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();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.