我正在使用Ruby(而不是Rails)和PostgeSQL,并且当你知道要尝试交叉引用的列和行时,我已经敲了几个小时试图弄清楚如何分配字段的值。
我尝试了以下内容:
包含城市和链接距离的数据库,类似于:
Cities city1 city2 city3 city4
city1 0 17 13 6
city2 17 0 7 15
city3 . . .
city4 . . .
我尝试过使用以下代码:
array.each { |city| #array being the array containing the sorted cities
from_city = city
query { |row|
#row is a hash containing each city as key and distance as val
#first row: {"Cities"=>"city1", "city1"=>"0", "city2"=>"17",...
#I have tried doing a row.each and grabbing the value of the specified city key,
but that doesn't work..
}
}
还有更好的方法吗?基本上我需要知道的是,当我知道我想要使用哪两个城市并将其分配给变量distance
时,我可以如何拉取距离值。
答案 0 :(得分:0)
我会更改您的数据库架构(SQL数据库实际上并不是设计为按列访问工作,每次添加城市时添加新列都非常痛苦):
origin | destination | distance
city1 | city2 | 17
... More rows ...
这样可以查看两个城市之间的距离:
conn.exec_params('SELECT distance from cities where origin = $1 and destination = $2', [city1, city2])
将返回1行,其中1列是两列之间的距离。
或者,如果您的数据集很小并且变化不大,那么将数据存储为文件并在启动时将其加载到内存中没有任何问题。取决于您的用例。
此外,如果您要进行大量的几何计算,PostGIS可能就是您想要的。