php – 如果属于同一个外部ID的所有多行具有相同的值,则MYSQL会更新一行

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – 如果属于同一个外部ID的所有多行具有相同的值,则MYSQL会更新一行脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我有3张桌子:时间表和地点,套房.

计划的结构:schedule-id,location-id,schedule-completed-on-date

地点的结构:location-id,location-building-number,location-street-name

套房的结构:套房ID,位置ID,套房号码,套房参观

许多套房可能属于同一地点. Schedule的location-id是唯一的,因此任何时候可能只有一个唯一的位置,没有重复.

我想将schedule-completed-date-on设置为一个日期,我知道该怎么做,如果一个日程表行的位置的每个套件都有套件访问等于1(0-否,1-是).

是否可以使用MySQL,如果可以,那么如何?或者我是否必须使用服务器端语言以编程方式执行此操作?

例如,如果我有两个位置 – 1个主街和2个主街 – 总共10个套房 – 5个属于第一个位置,其他5个属于第二个位置.如果MysqL检测到与第一个位置相关的所有5个套件行的套件访问量等于1,则立即将schedule-completed-on设置为当前日期,否则不会.

手头的数据和期望的结果:

LOCATIONS
location-id     location-building-number    location-street-name
    1                   1                           Main St.
    2                   2                           Main St.

SUITES
suite-id    location-id     suite-number    suite-visited
    1           1               100             1
    2           1               200             0
    3           1               300             0
    4           1               400             0
    5           1               500             1
    6           2               1000            1
    7           2               1100            1
    8           2               1200            1
    9           2               1300            1
    10          2               1400            1

SCHEDULE
schedule-id     location-id     schedule-completed-on-date
    1               1                   NULL
    2               2               7/3/2015 00:00:00

// because all suites for location 2 have suite-visited set to 1
// second row under SCHEDULE gets the date set 
// because all suites belonging to
// location 2 have been visited

解决方法

基于套件访问表的更新触发SCHEDULE的自动更新,适当地命名触发器.

DELIMITER $$     
  CREATE TRIGGER trigger_name
  AFTER UPDATE
     ON suite-visited FOR each ROW      
  BEGIN      
      IF NOT EXISTS (select 1 From SUITES where suite-visited = 0 and location-id = new.location-id) THEN
          UPDATE SCHEDULE set schedule-completed-on-date = curdate() where location-id = new.location-id;
      END IF;
  END;
$$
DELIMITER ;

脚本宝典总结

以上是脚本宝典为你收集整理的php – 如果属于同一个外部ID的所有多行具有相同的值,则MYSQL会更新一行全部内容,希望文章能够帮你解决php – 如果属于同一个外部ID的所有多行具有相同的值,则MYSQL会更新一行所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。