レシピのリストを表す ListView を作成しようとしています。SimpleCursorAdapter
それを達成するためにa を使用するという概念を理解しました。
ただし、各アイテムのレシピ画像とタイトルを表示するだけでなく、レシピに関連付けられた材料のカンマ区切りの文字列を表示したいと考えています。カーソルは 1 つのテーブル (またはビュー) のみを対象としているため、これにアプローチする方法がよくわかりません。
関連するテーブル/列は次のとおりです。
recipes (
_id integer primary key,
name text not null
)
ingredients (
_id integer primary key,
name text not null
)
recipes_ingredients (
_id integer primary key,
recipe_id integer not null,
ingredient_id integer not null
)
編集:この質問に対する最初の 2 つのコメントから、単純な JOIN では十分ではないと考える理由について、十分な情報がないと思うようになりました。テーブル構造を考えると、レシピには 1 つだけでなく複数の材料を含めることができます。つまり、単一のレシピに対して結合を実行しようとすると、次のような結果になります。
SELECT r.name AS recipe, i.name AS ingredient
FROM recipes r
INNER JOIN recipes_ingredients ri ON ri.recipe_id=r._id
INNER JOIN ingredients i ON ri.ingredient_id=i._id;
recipe | ingredient
------------------+---------------------
Chocolate Milk | milk
Chocolate Milk | chocolate syrup
Chicken Parmesan | chicken breast
Chicken Parmesan | italian breadcrumbs
Chicken Parmesan | egg
Chicken Parmesan | shredded mozzarella
Chicken Parmesan | pasta sauce
単純なカーソルでは、「Chocolate Milk」が 2 回、「Chicken Parmesan」が 5 回表示されます。これは間違いなく私が望むものではありません。すべての成分をカンマで区切って、それぞれを一度表示したいと思います。すなわち:
recipe | ingredients
------------------+---------------------------------------------------------------------------
Chocolate Milk | milk, chocolate syrup
Chicken Parmesan | chicken breast, italian breadcrumbs, egg, shredded mozzarella, pasta sauce