比较表内的数据

时间:2013-06-13 08:37:43

标签: mysql sql nosql compare

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

CHALLENGE

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

  • id(INT,UNIQUE)
  • company(INT) - >链接到包含公司的另一个表
  • costtype(INT)
  • value(INT)

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

FACTS

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

假说

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

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

问题

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

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

1 个答案:

答案 0 :(得分:0)

构建一个包含以下列的参考表

id (autogen), compare_from_company_id, compare_to_company_id, value

字段说明。

  1. id - autogen field
  2. 参考公司
  3. 你方程式中的其他公司
  4. ABS的价值([参考公司成本类型价值] - [其他公司成本价值])^ 2
  5. 然后,当主表上的主记录发生变化时,您可以在事件上填充此表。然后,您可以使用其他查询轻松引用此新表。