java - 在 Java 中比较两个表列值

标签 java sql algorithm maximo

我在 Maximo 7.5 中有两个表。

表 A:在表 A 中具有属性 WORKORDERNUM、EXPECTEDTIME 和 FINISHTIME。 表 B:在表 B 中具有属性 WORKNUM 和 STATUS。

我想做的是: 如果 FINISHTIME > EXPECTEDTIME,则将表​​ B 中的 STATUS 更新为“NOTGOOD”,否则什么也不做。 我为此创建了一个 CronTask,每五分钟运行一次。

现在我能想到的是两种方法。

1.循环遍历所有表A,在循环中每次对表B执行一次数据库查询。

示例代码如下:

 MboSetRemote TableA = mxs.getMboSet("TABLEA", ui);
 MboSetRemote TableB = mxs.getMboSet("TABLEB", ui);
 TableA.setWhere("FINISHTIME > EXPECTEDTIME");
 TableA.reset();
 TableB.setWhere("");
 TableB.reset();
 MboSet TableARow = null;
 MboSet TableBRow = null;
 //now it will give  a list of entries. Which needs to be matched with Table B and values be updated in Table B STATUS.
while ((TableARow = TableA.getMbo(i)) != null)
{
 int A = TableA.getString("WONUM");
    while((TableBRow = TableB.getMbo(i)) != null)
      int B = TableB.getString("WONUM");
      if (A == B){
      //set SATUS etc}

 }
TableB.save();
TableA.save();

2. 循环遍历所有表 A。在循环内执行每次比较表 B 的值。

 MboSetRemote TableA = mxs.getMboSet("TABLEA", ui);
 MboSetRemote TableB = mxs.getMboSet("TABLEB", ui);
 TableA.setWhere("FINISHTIME > EXPECTEDTIME");
 TableA.reset();
 MboSet TableARow = null;
 //now it will give  a list of entries. Which needs to be matched with Table B and values be updated in Table B STATUS.
while ((TableARow = TableA.getMbo(i)) != null)
{
 TableB.setWhere("WONUM= TABLEA.WONUM");
 TableB.reset();
//set SATUS etc
 TableB.save();
 }
TableA.save();

哪个更好、更划算?

还有什么建议吗?

最佳答案

编写和使用自动化脚本很有趣,但它们并不总是完成工作的最佳工具。在这种情况下,我会使用

  1. EscalationTableA 中搜索 FINISHTIME > EXPECTEDTIME
  2. 数据库配置中的关系,从TableATableB,其中wonum = :wonum and siteid = :siteid
  3. 一个基于 TableAAction,它使用标准符号中的上述 Relationship 来设置 TableB 中的状态

与所介绍的方法相比,此方法的主要优点是可升级性和可支持性。可升级性,因为不涉及可以弃用的代码,并且因为所有配置都是可升级的,以及可支持性,因为 IBM 支持配置但不支持定制。 (对于自动化脚本,支持您编写它们的能力,但不支持您的代码本身。这与数据库配置中的关系相同。)

关于java - 在 Java 中比较两个表列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34925603/

相关文章:

java - 通过java程序从Linux服务器读取文件

sql - 无法将 NULL 值插入列 'USERNAME',表 'tempdb.dbo.#temptable 错误

algorithm - 后缀数组生成的成本如何 O(n^2 log n)?

python - 将正方形添加到由正方形组成的多边形

algorithm - 在球冠上找到均匀分布的随机点

java - 邮件API免费配额无需计费?

java - hibernate 无法将 ID 分配为 double

sql - 从 case 表达式中排除

SQL 聚合一个表中的值并与另一个表中的计数合并

java - 如何在 Jar 文件中获取 Unicode