我有A -> B
描述這意味着存在一個連接,總重量1,從A到B.我想解決(這不是一個學術項目)的問題有向圖是我怎麼能告訴兩個節點之間有多少個公共連接。高級圖形SQL問題
說,在A和B
方面有2件事情需要去做,
*爲了看我所有的,B的,在鏈接,而(所有A的一些B)
*計算出所有我的,原始的B,A的共同A的數量。
我不知道如果是有道理的,但我會告訴你,我已經走了多遠。
*第一點。
SELECT A
FROM graph
WHERE B='myid';
大多數人都知道,第1部分是一個非常簡單的問題。第2部分是事情變得棘手的地方。
我已經能夠獲得至少1個連接或更相似的所有A。
第二點。
SELECT G.A, count(G2.A) AS common
FROM graph AS G2
JOIN (
SELECT A, B
FROM graph
WHERE B = 'myid'
) AS G ON G.A = G2.B
所以第二點接近,因爲它會返回所有共同的聯繫,但不會返回它沒有共同的鏈路上的所有鏈接。有沒有辦法得到這個?
仍然存在混淆:我試圖用文字畫出一張圖片。
這是表格。
A, B
-----
2, 1
3, 1
2, 3
如果我想看看所有傳入連接許多常見的鏈接到節點1我應該看到
A, count
---------
2, 1 // This is for 2's connection to 3.
3, 0
隨着當前的SQL語句我有我看到這一點。
A, count
---------
2, 1 // This is for 2's connection to 3.
哦,還有一件事。表格看起來像這樣[a,b]就是這樣。意思A有一個指向B的鏈接(A => B) – Michael 2011-06-06 17:20:47
你想要計算什麼?從同一個A到B有多少個連接? ....你是什麼意思的「共同」? – 2011-06-06 17:26:41
就像Facebook一樣,你可以看到你有多少朋友與你的朋友有共同點。我想看看有多少通用鏈接到我的一些B(B的所有A的)。現在它只會返回A與B中其他A之間的共同鏈接,但是我想要那些也沒有共同鏈接的鏈接。 – Michael 2011-06-06 17:30:43