SQLite Как добавить все строковое содержимое столбца в одну строку (с условием) - PullRequest
0 голосов
/ 04 марта 2019

Я работаю над приложением с SQLite, и в каждой строке есть столбец строк имени и столбец шашек.По сути, у каждого человека в моей базе данных есть имя и проверка, показывающая, подал ли человек заявку на курс или нет.COLUMN_NAMES имеет такие строки, как «ALEX», «JASON» и т. Д., А COLUMN_CHECK содержит строку, например «YES» или «NO».

При нажатии кнопки я хочу создать одну строку, например «ALEX»., JASON, WALTER, TOM, HEISENBERG "только с именами тех, которые имеют значение COLUMN_CHECK" YES ".

Вот пример изображения, если я не понял себя выше:

TABLE AND STRING

У меня есть класс DatabaseHelper с именем CRUD.class, и это некоторые ключевые строки в моих классах:

Entries.class (класс данных):

public static final String COLUMN_NAMES = "names";
public static final String COLUMN_CHECK = "check";

public static final String TABLE_NAME = "entries";
public static final String CREATE_TABLE =
        "CREATE TABLE " + TABLE_NAME + "("
                + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
                + COLUM_NAMES + " TEXT,"
                + COLUMN_CHECK + " TEXT"
                + ")";

public Entry() {
}

public Entry(int id, String names, String check) {
    this.id = id;
    this.names = names;
    this.check = check;
}

public int getId() { return id; }
public void setId(int id){ this.id = id; }

public String getNames() { return names; }
public void setNames(String names){ this.names = names; }

public String getCheck() { return check; }
public void setCheck(String check){ this.check = check; }

MainActivity.class:

  private EntryAdapter mAdapter;
    private List<Entry> entryList = new ArrayList<>();
    private RecyclerView recyclerView;
    private CRUD db;


        db = new CRUD(this);
        entryList.addAll(db.getAllEntries());

        mAdapter = new EntryAdapter(this, entryList);
        RecyclerView.LayoutManager mLayoutManager = new 
        LinearLayoutManager(getApplicationContext());
        recyclerView.setLayoutManager(mLayoutManager);
        recyclerView.setItemAnimator(new DefaultItemAnimator());
        recyclerView.setAdapter(mAdapter);

Заранее спасибо!

1 Ответ

0 голосов
/ 04 марта 2019

Вы можете использовать функцию SQLite GROUP_CONCAT здесь:

SELECT GROUP_CONCAT(names) AS names_csv
FROM entries
WHERE "check" = 'YES';

enter image description here

Демо

Примечание: пожалуйста, избегайте , используя ключевые слова SQLite, такие как check, для имен таблиц и столбцов.Чтобы этот запрос работал, вам нужно будет экранировать check в двойных кавычках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...