我有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