簡體   English   中英

根據日期從另一個表更新mysql一個表

[英]Update mysql one table from another table based on dates

我有一個學生出勤系統的程序,並記錄保存在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的日期將為“ app”列加1並忽略不參加會議的日期。

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'
UPDATE attendance  d
  JOIN application p
    ON d.uid = p.uid
   AND d.date BETWEEN p.from AND p.to
   AND p.status = 'approved'
SET    d.app = 1
WHERE  d.status = 0

這應該做您想要的:

UPDATE attendance a
    Set a.app=1
    WHERE a.uid IN
        (select z.uid
            FROM application z
            WHERE z.status='approved'
                AND a.date BETWEEN z.from and z.to);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM