2013-04-16 8 views
5

क्या हरीदाओ के साथ संबंधित तालिका में किसी क्षेत्र द्वारा सॉर्ट करने का कोई तरीका है? जैसे मेरे पास कारों की एक टेबल और ड्राइवरों की एक टेबल है। प्रत्येक कार में एक ड्राइवर होता है। अब मैं पूछताछ करना चाहता हूं (उदा। नीली) कारें और ड्राइवर के नाम से क्रमबद्ध करेंसंबंधित तालिका में क्षेत्र द्वारा greendao क्रमबद्ध करें

उत्तर

4

क्वेरीब्यूल्डर में सॉर्टिंग ऑर्डर निर्दिष्ट करने के तरीके हैं। "ऑर्डर ..." से शुरू होने वाली विधियों की तलाश करें, उदा। orderAsc (प्रॉपर्टी)।

+0

ओह रुको, हम अभी तक शामिल नहीं हैं। ;) मान लीजिए कि आपको अभी कुछ कस्टम (कच्ची) क्वेरी लिखनी है। –

+0

हाँ आपने जवाब देने के बाद फिर कोशिश की और de.greenrobot.dao.DaoException मिला: संपत्ति 'foo' बार का हिस्सा नहीं है क्या आपके पास कच्चे प्रश्न के साथ इसे कैसे किया जाए इस पर एक उदाहरण है? – ligi

+0

ऑर्डर विधियां क्वेरीबिल्डर पर उपलब्ध नहीं हैं। जो लगता है –

4

मैं इस समय भी ग्रीनडाओ के साथ खेलता हूं और उम्मीद करता हूं कि पहले जवाब में टिप्पणी के लिए मेरा थोड़ा सा जोड़ा और queries part of the greenDao documentation में विवरण मदद करता है।

निम्नलिखित स्निपेट काम करना चाहिए (यह परीक्षण नहीं किया है :)):

Query query = carsDao.queryRawCreate( ", driver D WHERE T.COLOR='blue' AND T.DRIVER_ID=D._ID ORDER BY D.NAME ASC"); 

यह इस करने के लिए आंतरिक रूप से एक एसक्यूएल समान बनाता है:

SELECT T.'id', T.'name', T.'color', T.'driver_id' 
FROM cars T, driver D 
WHERE T.COLOR='blue' 
AND T.DRIVER_ID=D._ID 
ORDER BY D.NAME ASC 

बयान के पहले भाग बनाई गई है आपके लिए क्वेरी RawCreate विधि द्वारा, बाकी कस्टम एसक्यूएल कथन है जो queryRawCreate पर पारित किया गया था।

this question देखें यदि आपको आश्चर्य है कि जॉइन स्टेटमेंट कहां है।

0

आप ग्रेबैडो ओआरएम द्वारा उत्पन्न किए गए दाओ के साथ क्वेरीबिल्डर का उपयोग कर सकते हैं। इससे पहले कि आप

ProductDao productDao; 
DaoSession daoSession; 

का उपयोग आप DaoMaster और आपके आवेदन दायरे में DaoSession रखूं

को परिभाषित करें। उस वर्ग के ऑनक्रेट() के अंदर जो एप्लिकेशन को बढ़ाता है।

DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(getApplicationContext(), "app-db", null); 
SQLiteDatabase db = helper.getWritableDatabase(); 
daoSession = new DaoMaster(db).newSession(); 

प्रारंभ करने से पहले आप

daoSession = ((MyApplication) getApplication()).getDaoSession(); 
productDao = daoSession.getProductDao(); 

का उपयोग आप गतिविधि में प्रदर्शित करने के लिए इस तरह परिणामों को सॉर्ट कर सकते हैं।

private void refreshProducts() { 
     switch (sorted_by){ 
      case SORT_BY_DATE: 
       cardItems = productDao.queryBuilder().orderAsc(ProductDao.Properties.Id).list(); 
       setupRecyclerView(); 
       break; 

      case SORT_BY_PRICE: 
       cardItems = productDao.queryBuilder().orderDesc(ProductDao.Properties.Price).list(); 
       setupRecyclerView(); 
       break; 

      case SORT_BY_POPULARITY: 
       cardItems = productDao.queryBuilder().orderDesc(ProductDao.Properties.Name).list(); 
       setupRecyclerView(); 
       break; 
     } 
    } 
संबंधित मुद्दे