du4010 2017-06-06 05:16
浏览 62
已采纳

自动化mysql表中的数据计算

I have 2 tables Environment and room:

Environment
+-------+------------+--------------+----------------------+
| Envid | Agregate   | Availability | RoomNo               |
+-------+------------+--------------+----------------------+

Room
+--------+----------+-------------+------------------+
| RoomNo | Humidity | Temperature | Lighting         |
+--------+----------+-------------+------------------+
|  1     |    50    |  40         |  9               |
|  2     |    79    |  25         |  7               |
|  3     |    50    |  40         |  9               |
+--------+----------+-------------+------------------+

Basically, Environment is an empty table. What I need is to automate its calculation:

  1. Take the values of Humidity, temperature and lighting from Room on EACH ROW,
  2. sum them up together. This I have been able to do-

SELECT RoomNo,Humidity,Temperature,Lighting, Humidity+Temperature+Lighting AS Agregate FROM Room;

I just need to:

  1. Store this new calculated "Agregate" in Environment table as "Agregate"

  2. Populate it with the corresponding room number of the table Room (via foreign key).

EDIT: 5. Availability(boolean) of Room, should Update to 1 when Agregate > 100.

Can this be done directly in mysql? or in PHP ?

Note: RoomNo in Environment is a Foreign key OF Primary key in Room

</div>
  • 写回答

1条回答 默认 最新

  • dtip91401 2017-06-06 08:52
    关注

    Use the following triggers to populate the Environment table.

    delimiter |
    CREATE TRIGGER `after_update_Room` 
      AFTER UPDATE ON `Room` FOR EACH ROW 
        BEGIN 
          UPDATE Environment
          SET Agregate = NEW.Humidity + NEW.Temperature + NEW.Lighting
          WHERE RoomNo = NEW.RoomNo;
        END;
    |
    
    delimiter |
    CREATE TRIGGER `after_insert_Room`
        AFTER INSERT ON `Room` FOR EACH ROW
        BEGIN
           INSERT INTO Environment (`Agregate`, `RoomNo`) 
           SELECT Humidity+Temperature+Lighting AS Agregate, RoomNo 
           FROM Room 
           WHERE RoomNo = NEW.RoomNo;
        END;
    |
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 酬劳2w元求合作写文章
  • ¥15 在现有系统基础上增加功能
  • ¥15 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图