私はユーザーのリストとワクチンのリストを持っています。ユーザーが持っているワクチンを追跡したいので、vaccine_users テーブルも持っています。ビューにチェックボックスのリスト、ワクチンの名前、およびユーザーがその特定のワクチンを接種したかどうかを表示したいと考えています。
私は現在、ListActivity を使用しています。これは、ビューをリサイクルすることを理解しているため、カーソルにデータを保持する必要があります。ユーザーが持っていないワクチン。
だから私はこのようなものが欲しい:
userId vaccineId hasVaccine
1 2 0
1 2 1
テーブル user、vaccine、vaccine_user があり、ユーザーが持っているワクチンを照会できますが、ユーザーが持っていないワクチンを保存しないため、hasVaccine=0 行が問題になります。
編集:左外部結合は正しい軌道に乗っていると思います。これを試しました:
SELECT v.name, u._id as userId, vu._id as vaccineId FROM user u LEFT OUTER JOIN vacc_user vu ON u._id = vu.userId LEFT OUTER JOIN vaccine v ON v._id = vu.vaccineId WHERE u._id = 4;
そして、私はそれがこれにつながるべきだと思います
name userId vaccineId
Ebola 4 2
Hepatit A 4 null
ユーザーがエボラの予防接種を受けているが Hep A の予防接種を受けていない場合、私はエボラ行を取得します。
編集 2: sqllite3 用に作成された現在の形式の関連テーブルを次に示しますが、MySql でも機能することを願っています。
CREATE TABLE user (_id integer primary key autoincrement, name text not null default 'unnamed');
CREATE TABLE vacc_user(_id integer primary key autoincrement, userId integer not null default 0, vaccineId integer not null default 0);
CREATE TABLE vaccine (_id integer primary key autoincrement, name text default 'unnamed vacc', text text default 'no desc');