有效地找到映射

时间:2011-02-03 22:37:25

标签: sql database algorithm

假设我们有两个具有m到n关系的数据集A,B。

A = {k1,k2,k3 .... kn} B = {g1,g2,g3 .......... gn}

两个集合中的所有元素都是字母数字。 现在,来自Set A和Set B的每个元组都存储在表T中。

代表: - (k1,g2) (k2,g4) (k1,g3) (k4,g2) ... ... .. (kn,gm)

挑战在于找出集合A中的'm'元素以最有效的方式映射到集合B中的'n'个元素。

对于前者,假设我们有以下元组,

(k1,g1) (k1,g2) (k3,g1) (k3,g2) (k5,g1) (k5,g2)

我需要的o / p是(k1,k3,k5) - > (g1,g2)。

由于映射是m到n,因此简单的选择不起作用。如果您需要进一步澄清,请告诉我

由于这些信息已经存在于数据库中,我希望我们可以通过一些SQL来实现这一点。

非常感谢。

提前致谢...

1 个答案:

答案 0 :(得分:0)

您通常可以使用聚合和group by子句来解决此类问题。

例如,如果您的表名是T,那么:

select T.item1, concat(T.item2, ", ") from T group by T.item1

告诉你哪个item1映射到第2项。然后再次切换item1和item2,找到哪个item2映射到item1。