[英]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.