我有一个包含三列X,Y,Z的SQL表。我需要将它按组的方式拆分,使得具有相同X或Y或Z值的所有记录都被分配到同一组。我需要确保具有相同值X或Y或Z的记录不会跨多个组分割。识别连接节点堆中的图形 - 这是如何调用的?
如果您将记录视为X,Y,Z的边缘节点和值,则此问题与查找所有图形相同,即每个图形中的节点将通过X,Y或Z直接或间接连接 - 边界,但每个图形都没有与其他图形共有的边缘(否则它将成为同一图形的一部分)。
几年前,我知道这被称为什么,甚至还记得算法,但现在它逃脱了我。请告诉我如何调用这个问题,以便我可以解决Google的问题。如果你现在是一个很好的算法 - 请告诉我。如果你有一个SQL实现 - 我会娶你:)
例子:
X Y Z BUCKET
--------- ---------------- --------- -----------
1 34 56 1
54 43 45 2
1 12 22 1
2 34 11 1
的最后一行是在水桶1,因为Y = 34的值相同第一的行,这是斗1
你在说[GROUP BY'](http://www.w3schools.com/sql/sql_groupby.asp)子句吗? – Oded 2010-09-10 20:58:57
@Oded我不知道如何处理你的评论,无论是作为玩笑还是冒犯,但考虑到你的48k代表我会把它当作笑话。为那些喜欢千言万语的人添加了一个例子。 – zvolkov 2010-09-10 21:04:35
没有冒犯的意思 - 不同的用户对不同的技术有不同的知识水平。除非问题证明它,否则我不会假设知识。我认为你的SQL不是很好......我也发现这个问题很难理解,并且有些模糊,因此我的评论。 – Oded 2010-09-10 21:08:13