1

私は学生の出席システム用のプログラムを持っており、以下のようにmysqlテーブルに記録を保存します。存在する場合は1、存在しない場合は0

テーブル -> 出席

uid  date       status  App
1   01/07/2013  1   
1   01/07/2013  1   
1   01/07/2013  1   
1   01/07/2013  0   
1   01/07/2013  0   
1   02/07/2013  1   
1   02/07/2013  0   
1   02/07/2013  1   
1   02/07/2013  1   
1   02/07/2013  1   
1   03/07/2013  0   
1   03/07/2013  0   
1   03/07/2013  1   
1   03/07/2013  1   
1   03/07/2013  1   
1   04/07/2013  0   
1   04/07/2013  1   
1   04/07/2013  1   
1   04/07/2013  1   
1   04/07/2013  1   

また、学生が以下のような休暇申請書を提出するテーブルもあります

テーブル -> アプリケーション

 id  uid    from            to           status
 1   1    04/07/2013    07/07/2013  approved
 2   1    11/07/2013    12/07/2013  rejected

ステータスが承認済みに設定されている場合、アプリケーションで指定された 7 月 4 日から 7 月 7 日までの日付範囲が「出席」テーブルで検索され、ステータスが 0 の日付が見つかったとしても、「アプリ」列に 1 が追加され、無視されます。出席を取らない日。

4

3 に答える 3

3
UPDATE attendance  d
  JOIN application p
    ON d.uid = p.uid
   AND d.date BETWEEN p.from AND p.to
SET    d.status = 1
WHERE  p.status = 'approved'
于 2013-07-12T13:39:41.710 に答える