在Excel或SQL中交叉连接

时间:2017-03-20 15:38:22

标签: sql excel cross-join

我正在使用Gephi创建网络图,这里是我拥有的一小部分数据:

ID  Label
1   Sleep quality   
2   Stress  
3   Healthy Eating  
4   Tremor  
5   Balance 
6   Drooling    
7   Exercise    
8   Mood    
9   Speech  
10  Parkinson's On-Off

所以我希望我的图表有这10个节点。

然后对于边缘,我有:

Source Target   User
1       5       5346
5       4       5346
4       7       5346
7       6       5346
6       9       5346
9       3       5346
3       2       5346
2       8       5346
8       10      5346

“用户”栏是我添加的内容,用于解释我遇到的问题。我正在使用一个大型数据库(在SQL中)来获取此数据。在移动电话应用程序上,用户可以选择10种不同的可用选项(如节点中所列)。在SQL中,我可以轻松地查询数据,以便我可以获得每个用户的10个选项。

使用边缘表格中的信息创建带边缘的图表很容易,但我也想将每个边缘连接到所有其他边缘,这对我来说很重要。例如,1连接到“目标”中的所有人。然后5连接到“目标”中的所有那些,因此直到所有节点为每个用户彼此连接。

我可以手动执行此操作,但原始数据集有2000多个用户,这将需要很长时间。我知道有一种使用交叉连接的方法,可能在Excel或SQL中...但我不确定如何做到这一点..

谢谢!

1 个答案:

答案 0 :(得分:1)

你可以将这个交叉连接放到你的SQL中:(它会列出所有可能的Target的所有Source。)

   (SELECT e.Source as Source, n.ID as Target
      FROM
      (SELECT DISTINCT Source FROM tblEdges) as e
      cross join (SELECT DISTINCT ID FROM tblNodes) as n
      ) as xCross