[英]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.