【问题标题】:comparing columns in two different tables比较两个不同表中的列
【发布时间】:2014-12-23 20:26:14
【问题描述】:

我正在使用 C#、MySQL 来监控一些油箱我目前正在使用一个功能来监控油箱,该功能将三种状态之一分配给每个油箱(良好、警告、严重)。

该程序必须做的一件事是在油箱状态发生变化时发送电子邮件。我需要帮助的是如何比较 2 个不同表中的油箱状态以确定状态是否已更改。

这是我正在使用的两个表:

油箱表

tank_number INT,
station_id int, 
ip_address varchar(30),
product varchar(30),
alert_level1 int,
alert_level2 int, 
gallons int,
date,
status

状态表

ip_address varchar(30),
status varchar(5),
gallons int,
tank_number int,
date

【问题讨论】:

  • 状态表中每个坦克是否有多个条目,还是一对一的?
  • 没有坦克表每 15 分钟更新一次,所以每个坦克只有一个状态
  • @PaulBulling,您可以在状态表上添加更新后触发器,并在此处设置检查逻辑。根据您的知识,您可以进一步选择在何处实施电子邮件发送机制。但是对于状态变化检测,触发器可能会有所帮助。
  • 不是一个好主意。但是使用触发器更新另一个表以仅存储 tank_number 和 old_status。并在从 C# 读取时删除指定的行。
  • @PaulBulling 状态表似乎是油箱表的子集,如果您不是状态中的字符串审计级别数据,那么状态表有什么用?

标签: c# mysql


【解决方案1】:

这应该只是两个表的简单连接。大致如下:

SELECT s.status ,
       t.tank_number
  FROM status s INNER JOIN tank t ON s.tank_number = t.tank_number
 WHERE s.status <> t.status

这假定 tank_number 是坦克的唯一标识符,并仅检索状态已更改的那些坦克。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-28
    • 1970-01-01
    • 2019-03-08
    • 1970-01-01
    • 2021-07-23
    • 1970-01-01
    相关资源
    最近更新 更多