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 に答える