2011-01-05 67 views
0

我正在使用SQLite在Android应用程序中存储数据。我需要从两个地方之间的关系文件转储数据。例如与Android相关的数据库问题

该表将具有下列字段

LOCATION1 LOCATION2距离

XY 12

XZ 13

YX 12

如果我转储数据作为行,那么我是复制数据,即位置X &位置Y之间的距离。我倾倒两次,一次从X到Y &另一个从Y到X,但它会帮助我制作SQL查询,因为我可以直接给Location1 &位置2值&获得距离。

如果我想避免重复数据,我该怎么办? 我将只在位置1 & 2之间输入一次数据,但我将如何编写选择查询。

如果任何人有任何关于数据库结构&查询的建议/示例代码,请将它们发布。

而且该方法将让我更快的处理柜面Android应用

亲切问候,

CB

+0

这不是一个Android问题。使用其他标签可能会帮助您获得更多答案。 – hpique 2011-01-05 15:07:26

回答

0

我不是100%清楚你在问什么。你是说你在复制数据,因为两个字段Location1和Location2之间的差异与距离字段是相同的吗?如果是这种情况,那么你可以保留Location1和Location2。如果你需要的差异使你的查询,像这样:

SELECT abs(Location1 - Location2) FROM [table] WHERE [whatever] 

“ABS”带给您的绝对值。

就处理时间而言,我觉得这会比表中的距离字段慢,但是我们回到您的重复问题。

这有帮助吗?或者我误解了你的问题?



UPDATE
我想我明白。你有一堆位置V,W,X,Y,Z等。用户将从下拉框中选择Location1和Location2,然后你的应用程序将提供两者之间的距离。

所以说用户的LOCATION1和W为LOCATION2选择Y,你的应用程序将回Ÿ - W.

你过于复杂这一点。当用户选择LOCATION1和LOCATION2,只是从数据库中拉LocationCoordinates然后拿到差异

LocationName | LocationCoordinates 
      V    (x, y) 
      W    (x, y) 
      X    (x, y) 
      Y    (x, y) 
      Z    (x, y) 

然后:你的数据库只需要记录每一个位置即。根据数据库中存储位置的方式,您甚至可以在SQL中完成整个任务。但现在我建议你只使用SELECT语句来获取位置并从代码中找出差异(距离)。

+0

谢谢你的答复。让我给出的场景,当用户从相应的下拉列表中选择Location1作为X和Location2作为Y时,我需要返回他的距离。现在,关于数据库结构,我想我该如何避免数据冗余。在加载数据时,我在想如何在两个位置之间的数据库中转储一次数据,而不是像位置1 - > X和位置2 - > Y之间的距离为12然后再次倾倒位置1 - > Y和位置2之间的距离 - > X – chiranjib 2011-01-05 15:41:08

+0

检查我上面的答案更新。 – Marcus 2011-01-05 18:43:35

+0

感谢您的回复 – chiranjib 2011-01-06 09:06:29