1

Есть две таблицы в базе данных. Первая таблица содержит 3 колонки:

| ID | ItemTitle | ItemContent |

Вторая таблица 2 колонки:

| ID | Favorite |

Мне требуется отобразить данные первой таблицы по индексам Favorite второй таблицы, где Favorite является типом NUMERIC.

Cursor cursor = sqLiteDatabase.query(MainItemTable.mainItemTable,
        MainItemTable.columnsMainItem,
        // тут нужно обратиться к индексу Favorite другой таблицы
        // например, пытался сделать так: FavoriteTable.favorite + " = 1",
        null, null, null, null);

Возможно ли такое? Я так полагаю, что даже если возможно мне нужно будет делать rawQuery?

McDaggen
  • 2,578
  • можно и query и rawquery https://stackoverflow.com/a/34688420/9271527 – Andrey Mihalev Oct 04 '18 at 09:45
  • какая связь между таблицами? по избранному немного писал ранее, в общем то тут не нужны две таблицы, это только усложнит выборку – pavlofff Oct 04 '18 at 09:53
  • @pavlofff таблиц много, есть таблица с основным содержимым, есть таблица категорий, а категорий может быть очень много, со всех таблиц реализована возможность добавлять пункты в избранное, и я решил для индексов избранного использовать одну таблицу, более продуманного способа не нашел)) вот и возникла мысль делать выборку из другой таблицы. – McDaggen Oct 04 '18 at 09:58
  • @pavlofff в принципе еще была мысль, сделать таблицу favorite аналогичной основной таблице, и если пользователь добавляет в избранное, это пункт копируется в таблицу favorite, но пока что не стал так делать, так как каждый пункт еще можно редактироваться, и потом после редакта нужно будет обновлять его в текущем пункте и в таблице favorite – McDaggen Oct 04 '18 at 10:03
  • если в таблице избранного ID соответствует ID избранной записи в таблице контента, то запрос будет вида: SELECT ItemTitle, ItemContent FROM TableContent, TableFavorite WHERE TableFavorite.ID = TableContent.ID. для расширения кругозора можно (и нужно) почитать про связи в SQL - один ко многим, многие ко многим. вторая мысль неправильная совсем :) – pavlofff Oct 04 '18 at 10:03
  • @pavlofff разобрался вроде) про почитать согласен)) всему свое время, пока что на очереди другие книги) – McDaggen Oct 04 '18 at 11:51

1 Answers1

1

Все оказалось куда нельзя проще:

Cursor cursor = sqLiteDatabase.rawQuery("SELECT * FROM Main_item_table, Favorite_table WHERE favorite = 1", null);
McDaggen
  • 2,578
  • 1
    но так у вас нет никакой связи между таблицами, при удалении одних и затем добавлении других записей порядок будет нарушен и все "поплывет". sql-базы не гарантируют очередность элементов, должна быть явная связь, например по id, поэтому надо либо отложить другие книги и читать по sql (могу посоветовать "изучаем sql" Л.Бейли - очень доступно) , либо отложить эту задачу – pavlofff Oct 04 '18 at 12:17
  • @pavlofff Пожалуй отложу другие книги) – McDaggen Oct 04 '18 at 13:15