私はmySQLでこのシナリオをどのように進めるかを理解しようとしています -
3 つのテーブルがあります。テーブルt_student, t_teacher, t_result
の構造 (基本的に各テーブルの列) は次のとおりです。
t_student:
s_id, s_name, s1, s2, s3
ここで、s_id は主キー、s_name は生徒の名前、(s1、s2、s3) は数学、物理、化学などの科目です。
t_teacher:
t_id, t_name, s1, s2, s3
ここで、t_id は主キー、t_name は教師の名前、(s1,s2,s3) は数学、物理学、化学などの科目です。
t_result:
r_id, s_name, t_name, count
ここで、r_id は主キー、s_name は (student テーブルからの) 生徒の名前、t_name は (teach テーブルからの) 教師の名前、count は count を返します (これについては後で詳しく説明します)。
今、私がやりたいことは以下の通りです:
生徒と教師のテーブルには任意の数のレコードが存在する可能性がありますが、現時点では結果テーブルには何もありません。ここで、mySQL を使用して、学生テーブルの内容をスキャンしたいと思います。このテーブルの各レコードについて、ピックアップしたいと思います。
s1 の値を教師テーブル s2 の (s1,s2,s3) 列と比較し、値を教師テーブル s3 の (s1,s2,s3) 列と比較し、値を (s1,s2,s3) と比較します。教師テーブルの列
一致する値の数を取得し、count に格納します。
より明確にするために、生徒テーブルの最初のレコードの場合、s1、s2、および s3 が「phy」、「chem」、および「maths」であり、教師テーブルの最初のレコードが「maths」、「phy」、「computer」である場合"、この場合、student.s1 は teacher.s2 と一致するため、count は 1 になります。次に、student.s2 は teacher テーブルの s1、s2、s3 と一致しますが、一致は 0 であるため、count は 1 のままです。再び、student.s3 は、teach テーブルの s1、s2、s3 と照合されます。今回は、teacher.s1 と一致するため、count は 2 に増加します。したがって、student テーブルの最初のレコードと、teach テーブルの最初のレコードの比較の最後に、私はcount = 2を取得します。ここで、生徒の名前、教師の名前、および取得したカウントを含む行を結果テーブルに挿入します。
基本的に、学生テーブルの各行について、学生テーブルと教師テーブルの間で一致する s1、s2、s3 の数を取得し、これを結果テーブルに入れたいと考えています。
私はmysqlの基本的な操作しか知りません-選択、挿入、削除など..そのような操作には、plsqlやストアドプロシージャなど、それ以上のものが必要だと思いますか?
参考までに、私は phpmyadmin を使用しており、テーブルはそこに保存されています。テーブルから結果を取得し、これらのクエリを実行するには、php を使用します。
そのためのアプローチを教えてください。
ありがとう!