我正在寻找一种方法来更改行对的两个值的列值。通过分组来找到正确的行对。问题是因为分组只返回了一个row_id。
案例:一位培训师一天可以有两个活动。
如果客户计划进行培训活动,培训师会拜访该客户,因此他无法在第二次课程中拜访另一位客户。
计划培训活动的客户会收到提供的活动,这些活动的位置值为“空”或带有他们的 customerid。
这样,客户可以在一天内计划多个会话,而当第一个事件在另一个客户处时,另一个客户不能申请第二个事件。
事件分两步声明:首先状态更改为“待处理”,事件获得过期日期,下一步将状态更改为“已进行”。当挂起的事件到期时,状态将更改回“打开”。
问题:无法始终清除该位置。如果其他事件已发生或未决,则无法清除该位置。当两个事件都“打开”时,必须清除两者的位置。
设计:事件表包含一个列“位置”。如果计划了活动,则将这一天的所有“位置”字段设置为 customerid;
eventid - orderid - eventdatetime - expiredate - status - location
2 - NULL - 12 december 2012 9:00 - NULL - open - 45
3 - 54 - 12 december 2012 13:00 - 23nov2012 - pending - 45
4 - 74 - 13 december 2012 9:00 - 23nov2012 - pending - 45
5 - 23 - 13 december 2012 13:00 - NULL - taken - 45
6 - NULL - 14 december 2012 9:00 - NULL - open - NULL
7 - NULL - 14 december 2012 13:00 - NULL - open - NULL
如果 eventid 3 过期,状态必须设置为 'open' 并且 eventid 2 AND 3 的位置必须设置为 NULL 如果 eventid 4 过期,状态必须设置为 'open 但 eventid 4 的位置 AND 5 必须保持不变
我在两个查询中执行此操作:
查询一:
update trainingevents
set orderid = null
set expiredate = null
set status = "open"
where expiredate > now()
查询二:
update trainingevents
set location = null
set expiredate
where eventid in (
select eventid from trainingevents
where count(orderid)=0 and count(location)>0
group by date_format(eventdatetime, only date)
)
我使用分组来查找对,但分组只返回一个 eventid。
有什么建议可以同时获得这两个 eventid?