我有一個包含三列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