列の 1 つの値に基づいてクエリが実行されるときに、where 句を動的に変更することは可能ですか? つまり、(これは完全にでっち上げの例です) 生徒、出席したクラス、および遅刻のテーブルがあります。生徒ごとに、前回の遅刻以降に出席したすべてのクラスのリストを表示したいと考えています。したがって、クエリは次のようになります。
SELECT student, class, classdate
FROM attendance
WHERE classdate>(<<SOME QUERY that selects the most recent tardy for each student>>)
ORDER BY student,classdate;
または、より明確にするために、より多くのプログラミング用語に置き換えると、次のようになります。
for studentName in (SELECT distinct(student) FROM attendance):
SELECT student, class, classdate
FROM attendance
WHERE classdate>(SELECT classdate
FROM attendance
WHERE tardy=true AND student=studentName
ORDER BY classdate DESC
LIMIT 1)
ORDER BY classdate;
単一のクエリでこれを行う方法はありますか、または各学生に対して個別のクエリを実行する必要がありますか (基本的に上記のループに従って)? 実際の使用例は説明が複雑ですが (レコードの認証と、どのレコードを調べる必要があるかということです)、概念的には同じです。