73 長欠月報構成/JOINによる結合


TheShussekibo6.xlsmの出席簿(月ごと・学期ごと)シート構成では、
 ・該当学級の全生徒データを読み込んで
 ・各人IndexIDを頼りに、出欠席データを読み込む
としています。

このロジックでは、生徒テーブルと出欠テーブルを別個に読み込み、結果的に二つのテーブルを結合したデータを得ています。


TheShussekibo6_Ctrl.xlsmの長欠月報シート構成では、
SELECT Sys_StudentsMast.IndexID, Sys_StudentsMast.Grade, Sys_StudentsMast.Name, Sys_StudentsMast.BirthDate, Sys_StudentsMast.Address,
Sys_StudentsMast.PaPaMaMa, MS_AbsenceAggregated.AbsenceDays
FROM Sys_StudentsMastINNER JOIN MS_AbsenceAggregated
ON Sys_StudentsMast.FisYear = MS_AbsenceAggregated.FisYear
AND Sys_StudentsMast.IndexID = MS_AbsenceAggregated.IndexID
WHERE (Sys_StudentsMast.FisYear = 該当年)
AND (MS_AbsenceAggregated.Month = 該当月)
AND (7 <= MS_AbsenceAggregated.AbsenceDays)
ORDER BY Sys_StudentsMast.Grade, Sys_StudentsMast.Class, Sys_StudentsMast.xNumber

このスクリプトの、
Sys_StudentsMast INNER JOIN MS_AbsenceAggregated
ON Sys_StudentsMast.FisYear = MS_AbsenceAggregated.FisYear
AND Sys_StudentsMast.IndexID = MS_AbsenceAggregated.IndexID
に注目してください。

二つのテーブルを、FisYearとIndexIDを「キー」にして結合し、ひとつのテーブルと見立ててデータを取得しています。

これこそがRDBMS(Relational DataBase Management System)の真骨頂です!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です