Как я могу получить доступ к столбцам с тем же именем? Я пытался делать cursor.getString(cursor.getColumnIndexOrThrow("table.column"))
, но это не похоже на работуКурсор JOIN с тем же именем столбца
ответ
Вы можете использовать псевдонимы, то есть
db.rawQuery("SELECT column1 AS c1 FROM table");
Затем вы можете использовать:
cursor.getColumnIndex("c1");
Очевидно же относится и к полям из соединений. Cheers.
EDIT
Пример с присоединиться пункт:
db.rawQuery("SELECT t1.columnX AS c1, t2.columnY as c2 FROM table1 t1 INNER JOIN table2 t2 ON t1.A = t2.B");
Тогда вы можете просто использовать имя псевдонима, независимо от таблицы принадлежит:
cursor.getColumnIndex("c2") should return 1.
Я хотел сделать что-то вроде «SELECT Course.image, Student.image FROM курсов, поскольку курс присоединяется к студентам как к ученику .....», а затем с помощью 'cursor.getColumnIndex (« Course.index »); это возможно? –
Используйте «index», без «курса». префикс, и он работает. Для getColumnIndex() вам нужен псевдоним столбца, чтобы использовать другое имя столбца, чем имя реальной таблицы. – wujek
Привет, я применил InnerJoin на 2 столбец 1, который является первичным ключом в первой таблице, является чужой во второй таблице. Вторая таблица имеет 3 строки, связанные с внешним ключом, мне удалось выполнить rawquery, но не знаю, как ** Прочитать ** курсор, имеющий 1 строку из первой таблицы и 3 строки из второй таблицы в одном запросе. –
когда вы присоединяется, используйте псевдоним для имен столбцов и убедитесь, что он находится в проецировании. – Edison
Я использую rawQuery для этого. используя псевдоним также и попытался Alias.column_name; все еще не работает –