我正在研究一个学术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
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 4course_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都显示,这不应该是一个学生在一个学期的情况,因为学生只能一次只能学习一个班级。
发布于 2015-03-11 10:18:18
这就是我在连接三个表时所做的,您可能从这段代码中得到一些了解。
$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();https://stackoverflow.com/questions/26542151
复制相似问题