以下は、SQL ジャンキー向けの 1 つです。
学生名と学生登録の 2 つのテーブルがあります。学生は 1 年に 1 ~ 2 回、学位取得の過程で 8 ~ 10 回登録します。現在システムにいるすべての学生 (つまり、2013 年のすべての学生) を取得したいのですが、これは次のように行います。
SELECT studentkey, lastname, firstname, COUNT(year) AS registrations
FROM uctProgrammesRegistered
LEFT JOIN uctStudents
ON uctStudents.studentnumber=uctProgrammesRegistered.studentkey
WHERE programmeregistered='".$programmeCode."' AND year='".$year."'
GROUP BY studentkey, lastname, firstname
ORDER BY studentkey, lastname
これにより、現在の年に登録された回数の結果が得られます。しかし、私が本当に知りたいのは、学生がこれまでに登録した過去数年間の登録回数です。これは、WHERE の year=$year の部分を緩和するだけでは解決できないことに注意してください。現在登録している学生に、このグループの学生が何回登録したかを知りたいだけです。
JOINステートメントを複数回使用すると役立つと思いました(つまり、同じテーブルuctProgrammesRegisteredに別の結合を含めますが、どういうわけか、WHERE programmeregistered = '".$programmeCode."'のみで年チェックを省略します-それは機能しますが、SQLは機能しませんこの考えには賛同できないようです。