SQLite
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> SQLite

Làm thế nào để lọc trong một đến nhiều mối quan hệ với db phòng android

Hãy xem cách @Relation làm. Có hai giai đoạn:

  1. Phòng thực thi truy vấn bạn đã đặt trong @Query để có được người dùng. Như thường lệ, truy vấn đó không bao gồm bất kỳ Liên kết nào. Truy vấn này được sử dụng để lấy phần dữ liệu vẫn tồn tại trong bảng chính (User trong trường hợp của bạn).
  2. Phòng thực thi một truy vấn nữa. Đối với điều đó, nó nhìn vào @Relation và hiểu bảng nào nó sẽ truy vấn tiếp theo (Record trong trường hợp của bạn) và điều kiện kết hợp với kết quả của người dùng là gì. Điều quan trọng là bạn không có cách nào để xâm nhập vào quá trình tạo truy vấn này. Bạn không thể đặt bộ lọc trên Record các trường của chẳng hạn. Nhận kết quả Phòng chuyển đổi nó ở định dạng cần thiết (điền vào Danh sách Record ).

Bạn có các lựa chọn:

  1. Để xoay quanh mối quan hệ để đặt bộ lọc trên Record bảng (nhưng với điều đó, bạn sẽ nhận được dữ liệu phẳng mà không có Danh sách).
public class UserWithRecords {
    @Embedded
    protected Record record;
    @Relation(
            parentColumn = "user_id",
            entity = User.class,
            entityColumn = "id"
    )
    protected User user;
}

và để thay đổi truy vấn thành:

@Transaction
@Query("SELECT * FROM record_table WHERE date=:date")
public LiveData<List<UserWithRecords>> getDailyRecord(String date);
  1. Không sử dụng @Relation ở tất cả, hãy viết truy vấn với Joins như bạn đã thử. Nhưng sau đó, bạn nên chuyển đổi thủ công kết quả thành dạng cần thiết trong mã (kết quả lặp lại và tạo Danh sách).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Định dạng một số dưới dạng tiền tệ trong SQLite

  2. java.lang.OutOfMemoryError:[cạn kiệt bộ nhớ] khi đọc dữ liệu từ Sqlite Android

  3. Xóa mục khỏi ListView và Cơ sở dữ liệu bằng OnItemClickListener

  4. Ứng dụng ngừng hoạt động do cơ sở dữ liệu

  5. Làm thế nào để chèn hình ảnh trong thư viện bền vững trong phòng?