0

这是一个相当复杂的问题,所以我将其拆分:

挑战

我有一个具有以下结构的表:

  • id(INT,唯一)
  • 公司 (INT) -> 链接到包含公司的另一个表
  • 成本类型 (INT)
  • 值 (INT)

我需要通过计算每家公司所有成本类型的价值差异来比较公司。一家公司作为参考;其他公司应尽可能匹配参考公司的所有成本类型的值。然后需要根据与参考公司的匹配程度对结果进行排序。

事实

  • 我们可以假设所有公司都有相同的成本类型
  • 成本类型事先不知道:可以更改,恕不另行通知
  • 两家公司之间成本类型值的差异应计算如下: ABS([参考公司成本类型值] - [其他公司成本类型值]) ^ 2

假设

我能想到的比较这些数据的唯一方法是:

  • 获取所有不同的成本类型
  • 获取参考公司的这些成本类型的值
  • 以某种方式对每个公司的所有成本类型进行分组,并使用非常长的(自动生成的)查询将所有成本类型值与参考公司的值进行比较。

问题

  • 这甚至可能吗?我不知道如何在不加入一家公司的所有行的情况下一次比较多行,这将导致一个巨大的查询并且需要永远。
  • 有没有更有效的方法来做到这一点?也许对于我不知道的这些类型的问题有一个标准的解决方案?(在 Google 上找不到)
  • 是否有另一个数据库系统(SQL、NoSQL,我对一切都开放)可以比 MySQL(我现在使用的)更有效地处理这些类型的问题?

感谢您阅读整个问题;我知道它很长,但很难解释。几天来,我一直在努力应对这一挑战,但似乎无法控制事情。提前致谢!

4

1 回答 1

0

建立一个具有以下列的参考表

id (autogen), compare_from_company_id, compare_to_company_id, value

字段解释。

  1. id - 自动生成字段
  2. 参考公司在你的等式
  3. 你等式中的其他公司
  4. ABS 值([参考公司成本类型值] - [其他公司成本类型值])^ 2

然后,当主表上的主记录发生更改时,您在事件上填充此表。然后,您可以使用其他查询轻松引用此新表。

于 2013-06-13T08:54:22.150 回答