SQLite
 sql >> Teknologi Basis Data >  >> RDS >> SQLite

Cara memfilter dalam hubungan satu ke banyak dengan kamar android db

Mari kita lihat bagaimana @Relation bekerja. Ada dua tahap:

  1. Ruangan mengeksekusi kueri yang Anda masukkan ke @Query untuk mendapatkan pengguna. Seperti biasa, kueri itu tidak menyertakan Gabung apa pun. Kueri ini digunakan untuk mendapatkan bagian data yang ada di tabel utama (User dalam kasus Anda).
  2. Ruangan menjalankan satu kueri lagi. Untuk itu tampilannya di @Relation parameter dan memahami tabel apa yang harus ditanyakan selanjutnya (Record dalam kasus Anda) dan apa yang seharusnya menjadi kondisi gabungan dengan hasil pengguna. Penting bagi Anda untuk tidak mengganggu proses pembuatan kueri ini. Anda tidak dapat mengatur filter pada Record bidang, misalnya. Mendapatkan hasil Room mengubahnya dalam format yang dibutuhkan (mengisi Daftar Records ).

Anda memiliki pilihan:

  1. Untuk membalikkan hubungan untuk menyetel filter pada Records tabel (tetapi dengan itu Anda akan mendapatkan data datar tanpa Daftar).
public class UserWithRecords {
    @Embedded
    protected Record record;
    @Relation(
            parentColumn = "user_id",
            entity = User.class,
            entityColumn = "id"
    )
    protected User user;
}

dan untuk mengubah kueri menjadi:

@Transaction
@Query("SELECT * FROM record_table WHERE date=:date")
public LiveData<List<UserWithRecords>> getDailyRecord(String date);
  1. Tidak menggunakan @Relation sama sekali, tulis query dengan Joins seperti yang sudah Anda coba. Tetapi kemudian Anda harus mengubah hasil secara manual ke bentuk yang diperlukan dalam kode (hasil perulangan dan membentuk Daftar).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dapatkan Senin Pertama, Kedua, Ketiga, atau Keempat dalam sebulan di SQLite

  2. Android Sqlite diupgrade untuk menghapus tabel dari database

  3. Cadangkan/Pulihkan Database SQLlite ke folder aplikasi Google Drive

  4. Perbedaan Antara NullIf() dan IfNull() di SQLite

  5. Cadangkan Database SQLite