1

ローカルのSqliteデータベースには1対多の関係があります。かなり基本的なもの。左外側の結合を行うと、次のような結果が返されます。

結果のカーソルには、次のような複数の行があります。

A1.id | A1.column1 | A1.column2 | B1.a_id_fk | B1.column1 | B1.column2 

A1.id | A1.column1 | A1.column2 | B2.a_id_fk | B2.column1 | B2.column2 

等々...

このような結果を処理するための標準的な方法または方法はありますか?明らかにA1しかありませんが、多くのBn関係があります。「リレーショナルデータベースの方法」の代わりに、複数のクエリを使用することに近づいています。うまくいけば、私は物事を行うためのより良い方法を知らないだけです。

私はこのクエリをコンテンツプロバイダーを介して公開するつもりであり、すべてのコンシューマーが同じ集計ロジックを作成する必要があることを嫌います。

4

1 に答える 1

2

結合は、私がこれまでに使用したすべてのSQLデータベースでこのように機能しました。これは、概念の定義のようなものです。

コンテンツプロバイダーには、コストのかかるリモートプロシージャコールが含まれることに注意してください。これが、Androidが連絡先などの結合と同じ行に沿って結果を非正規化し、プロセス間のラウンドトリップを最小限に抑える理由の1つです。

コンテンツプロバイダーの代わりにリモートサービスを使用し、カスタムAPIを公開することを検討できます。単純なで、指定されたAのBを返すことができList<>ます。または、すべてをJSON形式でシリアル化することもできます。または、データの重複が邪魔になる場合は、他の可能性がいくつもあります。

于 2010-06-02T17:12:29.020 に答える