2014-02-21 1 views
7

Как я могу получить доступ к столбцам с тем же именем? Я пытался делать cursor.getString(cursor.getColumnIndexOrThrow("table.column")), но это не похоже на работуКурсор JOIN с тем же именем столбца

+1

когда вы присоединяется, используйте псевдоним для имен столбцов и убедитесь, что он находится в проецировании. – Edison

+0

Я использую rawQuery для этого. используя псевдоним также и попытался Alias.column_name; все еще не работает –

ответ

7

Вы можете использовать псевдонимы, то есть

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. 
+2

Я хотел сделать что-то вроде «SELECT Course.image, Student.image FROM курсов, поскольку курс присоединяется к студентам как к ученику .....», а затем с помощью 'cursor.getColumnIndex (« Course.index »); это возможно? –

+0

Используйте «index», без «курса». префикс, и он работает. Для getColumnIndex() вам нужен псевдоним столбца, чтобы использовать другое имя столбца, чем имя реальной таблицы. – wujek

+0

Привет, я применил InnerJoin на 2 столбец 1, который является первичным ключом в первой таблице, является чужой во второй таблице. Вторая таблица имеет 3 строки, связанные с внешним ключом, мне удалось выполнить rawquery, но не знаю, как ** Прочитать ** курсор, имеющий 1 строку из первой таблицы и 3 строки из второй таблицы в одном запросе. –