我有一個用戶列表和疫苗的名單,我想跟蹤哪些疫苗用戶,所以我有一個vaccine_users表也是如此。我想在視圖中顯示覆選框列表,疫苗名稱以及用戶是否接種過特定疫苗。添加默認值未知
我目前使用的ListActivity,我明白回收視圖,所以我需要在遊標中的數據,這給了我一些麻煩,因爲我只想跟蹤誰有哪些接種,而不是用戶沒有的所有疫苗。
所以我想是這樣的:
userId vaccineId hasVaccine
1 2 0
1 2 1
我有表的用戶,疫苗,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');
但我想列出所有的疫苗無論用戶是否已接種與否。 – dutt 2012-04-08 09:45:38
然後循環用戶和循環內 - 循環疫苗:如果有記錄 - 用戶接受了它,否則,他/她沒有接受。 – alfasin 2012-04-08 09:47:51
問題是所有的數據都需要在查詢結果中 – dutt 2012-04-08 12:02:11