ช่วยเขียนคำสั่ง SQL นับจำนวนผู้ลงทะเบียน รายวิชาแยกตามปี/เทอม ให้หน่อยครับ
ต้องการนับจำนวนวิชาที่ลงทะเบียน เฉพาะในปี 2564 เทอม 1
ต้องเขียนคำสั่งยังไงครับ
ปล. หากวิชาในยังไม่มีการลงทะเบียน ให้เป็น 0
http://sqlfiddle.com/#!9/337b0f/1/0
Code
CREATE TABLE `tb_register` (
`sId` varchar(255) NOT NULL,
`sClass` varchar(255) NOT NULL,
`SubjectId` varchar(255) NOT NULL,
`Subject` varchar(255) NOT NULL,
`Year` int(4) NOT NULL,
`Term` int(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
INSERT INTO `tb_register` (`sId`, `sClass`, `SubjectId`, `Subject`, `Year`, `Term`) VALUES
('05575', 'ม.5', 'ค30220', 'ทฤษฎีกราฟ', 2563, 2),
('05010', 'ม.5', 'ค30222', 'สถิติเพื่อการวิจัยเบื้องต้น', 2563, 2),
('05041', 'ม.5', 'ค30220', 'ทฤษฎีกราฟ', 2564, 1),
('04969', 'ม.5', 'ค30220', 'ทฤษฎีกราฟ', 2564, 1),
('04961', 'ม.5', 'ค30222', 'สถิติเพื่อการวิจัยเบื้องต้น', 2564, 1),
('05002', 'ม.5', 'ค30222', 'สถิติเพื่อการวิจัยเบื้องต้น', 2564, 1),
('05639', 'ม.5', 'ค30218', 'การแก้ปัญหาอสมการและสมการเชิงฟังก์ชัน', 2564, 1);
CREATE TABLE `tb_subject` (
`Id` varchar(255) NOT NULL,
`Subject` varchar(255) NOT NULL,
`Credit` decimal(2,1) NOT NULL,
`Teacher` varchar(255) NOT NULL,
`Type_Subject` varchar(255) NOT NULL,
`Class` varchar(255) NOT NULL,
`Status` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
INSERT INTO `tb_subject` (`Id`, `Subject`, `Credit`, `Teacher`, `Type_Subject`, `Class`, `Status`) VALUES
('ว30213', 'อิเล็กทรอนิกส์เบื้องต้น', '1.0', '', 'เพิ่มเติมกลุ่ม 2', 'ม.5', '1'),
('ว30229', 'ผลิตภัณฑ์ธรรมชาติ', '1.0', '', 'เพิ่มเติมกลุ่ม 2', 'ม.5', '1'),
('ว30260', 'เทคโนโลยีชีวภาพ', '1.0', '', 'เพิ่มเติมกลุ่ม 2', 'ม.5', '1'),
('ว30217', 'ปฎิบัติการดาราศาสตร์พื้นฐาน', '1.0', '', 'เพิ่มเติมกลุ่ม 2', 'ม.5', '1'),
('ว30289', 'การเขียนโปรแกรมบนเว็บ', '1.0', '', 'เพิ่มเติมกลุ่ม 2', 'ม.5', '1'),
('ว30296', 'คอมพิวเตอร์เพื่อการออกแบบ', '1.5', '', 'เพิ่มเติมกลุ่ม 2', 'ม.5', '1'),
('ค30222', 'สถิติเพื่อการวิจัยเบื้องต้น', '1.0', '', 'เพิ่มเติมกลุ่ม 2', 'ม.5', '1'),
('ค30218', 'การแก้ปัญหาอสมการและสมการเชิงฟังก์ชัน', '1.0', '', 'เพิ่มเติมกลุ่ม 2', 'ม.5', '1'),
('ท30208', 'การเขียนร้อยกรอง', '1.0', '', 'เพิ่มเติมกลุ่ม 2', 'ม.5', '1'),
('อ30205', 'การอ่านเชิงวิเคราะห์', '1.5', '', 'เพิ่มเติมกลุ่ม 2', 'ม.5', '1'),
('ค30220', 'ทฤษฎีกราฟ', '1.5', '', 'เพิ่มเติมกลุ่ม 2', 'ม.5', '1');
Code
SELECT
tb_subject.Class,
tb_subject.Id,
tb_subject.`Subject`,
tb_subject.Credit,
tb_subject.Teacher,
tb_subject.Type_Subject,
COUNT(tb_register.SubjectId) AS sCount,
tb_subject.`Status`
FROM
tb_subject
LEFT JOIN
tb_register
ON tb_subject.Id=tb_register.SubjectId
WHERE tb_subject.Class = 'ม.5' AND tb_subject.`Status` = '1'
GROUP BY
tb_subject.Id
Tag : PHP, MySQL
ประวัติการแก้ไข 2021-03-26 19:28:32 2021-03-26 19:31:19 2021-03-26 19:31:41 2021-03-26 19:34:08 2021-03-26 19:34:28 2021-03-26 19:37:21
Date :
2021-03-26 19:27:31
By :
4ko6yon61
View :
1005
Reply :
8
อย่าลืมตรวจสอบปี ใน where clause ด้วย
ข้อกำหนด มีอะไร ก็ใส่ไปให้ หมด
Date :
2021-03-26 21:00:53
By :
Chaidhanan
เอาไป right.join กับตารางรายชื่อวิชา
Date :
2021-03-27 12:23:04
By :
Chaidhanan
LEFT JOIN
tb_register
ON tb_subject.Id=tb_register.SubjectId
AND tb_register.`Year` = 2564 AND tb_register.`Term` = 1
Date :
2021-03-28 10:02:57
By :
{Cyberman}
เล่าความจริงให้ฟัง
เมื่อเดือนที่แล้ว ลองไล่ดู ใครบ้างที่เกี่ยวข้องกับ ระบบการศึกษา และพบว่า
พะยูน ครอง กรมสามัญศึกษา ทั้งประเทศไทย
เห็นแล้ว หนาวเลย
+55555
Date :
2021-03-30 14:24:36
By :
ผ่านมา
Load balance : Server 02