2

我对 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()吗?

再次感谢大家,你们帮了大忙。(我也会继续努力)。

4

2 回答 2

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;
于 2012-05-01T13:57:34.253 回答
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'
于 2012-05-01T11:33:45.043 回答