2013-04-18 4 views
5

У меня 3 таблицы в моей базе данных sqlite Две таблицы конфигурации, а одна - основная таблица, где хранятся мои данные. теперь как извлекать данные из основной таблицы, объединяя 2 таблицы в android, как и где выполнять операции объединения.Присоединение таблиц в android

Может ли кто-нибудь вести меня.

+0

http://www.w3schools.com/sql/sql_join.asp проверить этот и использовать другой тип соединяет в соответствии с вашими требованиями .... – SBJ

+0

Спасибо за ваш ответ SBJ на самом деле я знаю об этих объединениях, но я не уверен, как выполнять то же самое в android – Siva

ответ

9

Вы можете просто выполнить rawQuery.
Например что-то вроде этого:

db.rawQuery("SELECT a.* 
FROM table_1 a 
INNER JOIN table_2 b ON a.id=b.anyId 
INNER JOIN table_3 c ON b.id= c.anyId 
WHERE c.key = ?", new String[]{"test"}); 

Первый параметр запроса вы хотите выполнить. Для всех ваших ключей, которые вы хотите добавить в свой запрос, просто добавьте ? в запрос.
Второй параметр - это строковый массив. В этом массиве вы кладете свои ключи, как пример, приведенный выше значения test.

EDIT:

это также можно использовать для rawQuery update, insert или delete.
Например, один простой запрос обновления:

db.rawQuery("UPDATE table_1 
SET fieldA = ?, 
fieldB = ? 
WHERE id = ?", new String[]{"test", "test2", "1"}); 
+0

Спасибо Obl Tobl, но я изучил необработанный запрос, может создать некоторые проблемы, есть ли какие-либо другие способ выполнить запрос на объединение и огонь – Siva

+0

Можете ли вы рассказать мне, какие проблемы вы слышали около? У меня никогда не было проблем в моих проектах. –

+0

Часто метод необработанных запросов возвращает неправильные результаты, и мне было рекомендовано не использовать его ... Если это действительный способ, мы можем выполнить вставку, обновление и удаление, а также с необработанным запросом ... Если да, то можете ли вы, пожалуйста, направить меня. извините за задание вопроса о том, что я новичок в андроиде, и я просто изучаю этап. Спасибо – Siva

-1

Вам нужно rawQuery способ решить эту проблему.

private final String MY_QUERY = "SELECT * FROM table_a a INNER JOIN table_b b ON a.id=b.other_id WHERE b.property_id=?"; 

db.rawQuery(MY_QUERY, new String[]{String.valueOf(propertyId)}); 

Но если вы хотите сделать хорошую реализацию создать SQLiteHelper и DataSource для каждой таблицы и сделать отношения в источник данных.

+0

Спасибо за ваш ответ
Да .. точно ... вместо этого необработанного запроса, как и вставка, есть какое-то fucntion для объединения таблиц и использования в нашем запросе select – Siva

0

класс DatabaseHelper расширяет SQLiteOpenHelper

писать ниже код в ваших funcions ...

SQLiteDatabase db = this.getReadableDatabase(); 

    private final String MY_QUERY = "YOUR QUERY"; 

    db.rawQuery(MY_QUERY, new String[]{"Parameter"}); 
    db.close(); 
+0

Спасибо, что SBJ выполнит его. – Siva

+0

вы действительно просто скопируете мой ответ? это не джентльменский стиль ... –

+0

Я копирую ваш запрос, как использовать запрос ... теперь я удалил ok .... – SBJ

Смежные вопросы