表結構改一下。 所有的審批都是同一條紀錄 部门主管_app 部门经理_app 人事负责人_app然後經理審批只要判斷 部门主管_app 是否 = 1 同樣人事负责人 審批只要判斷 人事负责人_app是否 =1 select * from table where 部门主管_app=1
select * from table where 下級審批=1 and 當前審批 = 0
这样改的结果是假如审批人多的话,不是要写很多判断?比如部门主管要判断: if (登陆ID是部门主管 and charge=1) 部门经理要判断: if (登陆ID是部门经理 and (charge=2 or charge=0) and manager=1) 总经理要判断: if (登陆ID是总经理 and (charge=2 or charge=0) and (manager=2 or manager=0)) 人事负责人要判断: if (登陆ID是人事负责 and (charge=2 or charge=0) and (manager=2 or manager=0) and (generalManager=2 or generalManager=0)) 这样判断不是要写死人啊?
select * from table where 下級審批=1 and 當前審批 = 0 and 部門ID = 當權人部門 或者在加上 and user = 當前登錄人這樣查出來的數據就是在這個部門裏面能夠操作的數據。。 代碼裏面根本不用寫什麽 if else...
我认为只要找到当前数据的前一条数据审批了,就表示这条该自己审批了,因为前面一条如果审批了,就代表前面的前面的一条也审批,依次类推,所以现在的问题是如何找到当前数据的前一条数据审批过?SELECT leaveID FROM leaveApprove WHERE (leaveID IN (SELECT leaveID FROM leaveApprove WHERE positionID = 6 AND deptID = 7 AND approve = 0)) AND (approve = 1)只能在这个基础上改
SELECT * FROM leave WHERE (id IN (SELECT (leaveID) FROM leaveApprove WHERE (leaveID IN (SELECT leaveID FROM leaveApprove WHERE positionID = 6 AND deptID = 7 AND approve = 0)) AND (approve = 1)))原本2个表一起查询是这样的,所以一定要leaveIDFROM leave WHERE (id IN (SELECT (leaveID)
所有的審批都是同一條紀錄
部门主管_app 部门经理_app 人事负责人_app然後經理審批只要判斷 部门主管_app 是否 = 1
同樣人事负责人 審批只要判斷 人事负责人_app是否 =1
select * from table where 部门主管_app=1
select * from table where 下級審批=1 and 當前審批 = 0
if (登陆ID是部门主管 and charge=1) 部门经理要判断:
if (登陆ID是部门经理 and (charge=2 or charge=0) and manager=1) 总经理要判断:
if (登陆ID是总经理 and (charge=2 or charge=0) and (manager=2 or manager=0)) 人事负责人要判断:
if (登陆ID是人事负责 and (charge=2 or charge=0) and (manager=2 or manager=0) and (generalManager=2 or generalManager=0)) 这样判断不是要写死人啊?
或者在加上 and user = 當前登錄人這樣查出來的數據就是在這個部門裏面能夠操作的數據。。
代碼裏面根本不用寫什麽 if else...
positionID为3的表示为部门主管,positionID为2的表示为部门经理,4为总经理,positionID为6的表示人事负责人请假单根据天数来跑流程:
比如2天内的跑 3,6
2天到5天的跑 3,2,6
5天以上的跑 3,2,4,6懂吗?
FROM leaveApprove
WHERE (leaveID IN
(SELECT leaveID
FROM leaveApprove
WHERE positionID = 6 AND deptID = 7 AND approve = 0)) AND
(approve = 1)只能在这个基础上改
FROM leave
WHERE (id IN
(SELECT (leaveID)
FROM leaveApprove
WHERE (leaveID IN
(SELECT leaveID
FROM leaveApprove
WHERE positionID = 6 AND deptID = 7 AND approve = 0)) AND
(approve = 1)))原本2个表一起查询是这样的,所以一定要leaveIDFROM leave
WHERE (id IN
(SELECT (leaveID)