У меня есть список пользователей и список вакцин, я бы хотел отслеживать, какие вакцины у пользователя есть, поэтому у меня также есть таблица vaccine_users. Я хочу отобразить список флажков в представлении, имя вакцины и, чтобы пользователь был вакцинирован этой конкретной вакциной.Добавить значение по умолчанию неизвестно
В настоящее время я использую ListActivity, который, как я понял, перерабатывает представления, поэтому мне нужно иметь данные в курсоре, что дает мне немного неприятностей, так как я хотел бы только отслеживать, кто имеет вакцинации, не все вакцины, которых у пользователя нет.
Так что я хотел бы что-то вроде этого:
userId vaccineId hasVaccine
1 2 0
1 2 1
У меня есть таблицы пользователя, вакцины, vaccine_user и я могу запросить, для которых вакцина имеет пользователь, но это hasVaccine = 0, что дает ряд Мне неприятно, потому что я не хранил, какую вакцину у пользователя нет.
EDIT: Я думаю, что левое внешнее соединение находится на правильном пути, я попытался это:
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
если пользователь вакцинированы против Эбола, но не Хеп А, но я просто получаю Эболу.
EDIT 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
затем петляйте пользователей и внутри цикла - зацикливайте вакцины: если есть запись - пользователь взял ее, иначе он/она ее не принимал. – alfasin
проблема в том, что все данные должны быть в результате запроса – dutt