我对MySQL很陌生,仍在尝试学习绳索。如果这太基本了,请原谅我
我有3张桌子:
学生:
Student id|Student name| Gender|Parent id
父:
Parent id|Parent name|Parent Address|Parent Phone|
和类:
Class id|Class Name|Class day
和学生唱名致电:
Student id|Class Id
我正在尝试计算每个家长在学校的学生人数和每个学生的班级数。
到目前为止,我设法改变查询以计算父名称和他们需要支付的活动数量:
SELECT CONCAT_WS(' ',P.Parent_title,P.Parent_fname,P.Parent_sname) AS 'Parent name',
COUNT(RC.Student_id) AS 'Number of Activities'
FROM Student S,Parent P,RollCall RC,Class C
WHERE S.Parent_id=P.Parent_id AND S.Student_id=RC.Student_id AND RC.Class_id=C.Class_id
GROUP BY S.Parent_id;
但我不确定如何包含SUM()
来计算每位家长需要支付的总金额,比如说每个班级是25美元。
我的教授暗示我需要使用CAST()
函数,但我不确定我应该使用它。我应该在COUNT()
?
再次感谢大家,你们得到了巨大的帮助。 (我也会继续努力)。
答案 0 :(得分:1)
除了上述评论之外,我认为这应该会为您提供您所追求的内容(每位父母的入学儿童/班级总数):
SELECT
CONCAT_WS(' ', Parent_title, Parent_fname, Parent_sname) AS 'Parent name',
COUNT(DISTINCT Student_id) AS 'Number of students',
COUNT(DISTINCT Student_id, Class_id) AS 'Number of classes'
FROM
Parent
JOIN Student USING (Parent_id)
JOIN RollCall USING (Student_id)
JOIN Class USING (Class_id)
GROUP BY Parent_id;
答案 1 :(得分:0)
为了改写你想要找到的东西,似乎对于每个家长来说,你想知道他在学校里有多少学生,以及这些学生有多少班级。我建议使用JOIN语法来连接所需的3个表。
SELECT CONCAT_WS(' ',P.Parent_title,P.Parent_fname,P.Parent_sname) AS 'Parent name',
count(distinct s.student_id) as num_students,
count(*) as studentclasses
FROM Parent p
JOIN Student S
ON S.parent_id = p.parent_id
JOIN studentrollcall src
on s.student_id = src.student_id
GROUP BY 'Parent name'