Идеальный способ запроса нескольких связанных таблиц - создать View . Представление объединяет данные из двух или более таблиц, используя join .
. В Android, используя библиотеку Room Persistance , вы можете создать такое представление, а затем выполнить запросполя зрения. Вот как вы можете это сделать:
Предположим, у вас есть таблицы:
Пользователь : идентификатор, имя, департамент ID
Отдел : идентификатор, имя
Создать представление:
@DatabaseView("SELECT user.id, user.name, user.departmentId," +
"department.name AS departmentName FROM user " +
"INNER JOIN department ON user.departmentId = department.id")
data class UserDetail(
val id: Long,
val name: String?,
val departmentId: Long,
val departmentName: String?
)
Добавить представление в базу данных:
@Database(entities = arrayOf(User::class),
views = arrayOf(UserDetail::class), version = 1)
abstract class AppDatabase : RoomDatabase() {
abstract fun userDetailDao(): UserDetailDao
}
Создание DAO:
@Dao
interface UserDetailDao {
@Query("SELECT * FROM UserDetail")
fun loadAllUserDetails(): Array<UserDetail>
}
Теперь вы можете запросить View, используя этот DAO.