2011-01-05 18 views
0

私はAndroidアプリケーションにデータを格納するためにSQLiteを使用しています。私は2つの場所の間の関係を持つファイルからデータをダンプする必要があります。例えばデータベースに関する質問

次のフィールド

位置1 LOCATION2距離を有することになるテーブル

XY 12

XZ 13

YX 12

Iが行としてデータをダンプする場合、私はデータを複製しています。つまり、場所Xの間の距離X &の位置Yです。私はXからYに一度二回、ダンプしています&もう一つはYからXですが、それは私が直接Location1を与えることができるようにSQLクエリを作成するのに役立ちます&ロケーション2の値&距離を取得します。

データの重複を避けたい場合は、どうすればいいですか? 場所1 & 2の間に1回だけデータを入力しますが、どのように選択クエリを書きますか。

クエリのデータベース構造&に関する提案/サンプルコードがあれば、親切に投稿してください。私

暖かいよろしく、

CB

+0

これはAndroidに関する質問ではありません。他のタグを使用すると、より多くの回答を得るのに役立ちます。 – hpique

答えて

0

Androidアプリケーションの包みより高速な処理を与えるアプローチも

私はあなたが求めているものを100%明確ではありませんよ。 Location1とLocation2の2つのフィールドの違いはDistanceフィールドと同じなので、データを複製しているとしますか?そうであれば、Location1とLocation2だけを保つことができます。あなたの違いが必要な場合:

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

"abs"はあなたに絶対値を与えます。

処理時間に関しては、これはテーブルの「距離」フィールドを持つよりも時間がかかるようですが、重複した問題に戻ります。

これは役に立ちますか?それともあなたの質問を誤解しましたか?



UPDATE
私は理解してだと思います。 V、W、X、Y、Zなどの多数の場所があります。ユーザーは、場所1と場所2のドロップダウンボックスから選択し、アプリケーションはその2つの間の距離を供給します。

だから、ユーザーが位置1とLOCATION2のためのWのためにYを選択したと言う、あなたのアプリケーションは、Yを返します - W.

あなたはこれを過剰に複雑にしているが。ユーザーが位置1とLOCATION2を選択したときに、単にデータベースからLocationCoordinatesを引き出した後、違いを取得し、その後

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

:あなたのデータベースはすべての場所、すなわちのレコードを必要としますデータベースに格納されている場所によって、SQL内ですべての作業を行うことさえできます。しかし、今のところは、SELECT文を使用して場所を取得し、コード内からの距離(距離)を見つけることをお勧めします。

+0

あなたの返信ありがとうございます。シナリオを教えてください。ユーザがそれぞれのドロップダウンリストからYとしてLocation1をX&Location2として選択すると、私は彼に距離を返す必要があります。次に、データベース構造に関して、データの冗長性。データの読み込み中、私は、Location1 - > X&Location2 - > Yの距離を12としてダンプするのではなく、Location1 - > Y&Location2 - > X – chiranjib

+0

上記の私の答えの更新を確認してください。 – Marcus

+0

返信ありがとう – chiranjib