SQLite
 sql >> डेटाबेस >  >> RDS >> SQLite

एंड्रॉइड रूम डीबी के साथ एक से कई रिश्तों में कैसे फ़िल्टर करें

आइए देखें कि कैसे @Relation काम करता है। दो चरण हैं:

  1. कक्ष आपके द्वारा @Query में डाली गई क्वेरी को निष्पादित करता है उपयोगकर्ताओं को प्राप्त करने के लिए। हमेशा की तरह उस क्वेरी में कोई जॉइन शामिल नहीं है। इस क्वेरी का उपयोग डेटा के उस भाग को प्राप्त करने के लिए किया जाता है जो मुख्य तालिका (User . में बना रहता है आपके मामले में)।
  2. कक्ष एक और क्वेरी निष्पादित करता है। उसके लिए यह @Relation को देखता है पैरामीटर और समझता है कि इसे आगे किस तालिका में क्वेरी करनी चाहिए (Record आपके मामले में) और उपयोगकर्ता के परिणाम के साथ जुड़ने की स्थिति क्या होनी चाहिए। यह महत्वपूर्ण है कि आपके पास इस क्वेरी बनाने की प्रक्रिया में दखल देने का कोई रास्ता नहीं है। आप Record पर फ़िल्टर सेट नहीं कर सकते हैं के क्षेत्र, उदाहरण के लिए। परिणाम प्राप्त करना कक्ष इसे आवश्यक प्रारूप में बदल देता है (Records की सूची भरता है )।

आपके पास विकल्प हैं:

  1. Records पर फ़िल्टर सेट करने के संबंध में बदलाव करने के लिए तालिका (लेकिन इसके साथ आपको सूची के बिना फ्लैट डेटा मिलेगा)।
public class UserWithRecords {
    @Embedded
    protected Record record;
    @Relation(
            parentColumn = "user_id",
            entity = User.class,
            entityColumn = "id"
    )
    protected User user;
}

और क्वेरी को इसमें बदलने के लिए:

@Transaction
@Query("SELECT * FROM record_table WHERE date=:date")
public LiveData<List<UserWithRecords>> getDailyRecord(String date);
  1. उपयोग नहीं करने के लिए @Relation बिल्कुल, जॉइन के साथ क्वेरी लिखें जैसे आपने कोशिश की है। लेकिन फिर आपको कोड में मैन्युअल रूप से परिणाम को आवश्यक रूप में बदलना चाहिए (लूपिंग परिणाम और सूची बनाना)।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एंड्रॉइड ऐप जारी होने के बाद मैं SQLite डेटाबेस में नए कॉलम कैसे जोड़ सकता हूं?

  2. स्क्लाइट में सम्मिलित क्वेरी के साथ समस्या? (परिवर्तनीय सम्मिलित करें)

  3. SQLite दिनांक और समय कार्य

  4. SQLite त्रुटि में एकाधिक पंक्तियाँ सम्मिलित करें (त्रुटि कोड =1)

  5. SQLite में कॉलम के डेटा प्रकार की जांच करने के 5 तरीके