Sunday, 15 July 2012

android - Misuse of aggregate function MAX() -


मुझे अलर्ट तालिका में कॉलम ignition_status के नवीनतम नहीं रिक्त मान चाहिए ।

मेरे पास कॉलम unix_time है जो यूनिक्स टाइम स्टाम्प में समय है, इसलिए अधिकतम unix_time स्तंभ मान, नवीनतम प्रविष्टि है।

< P> मेरा कोड नीचे है

  कर्सर = dbUtilsObj.query (Alert.TABLE_NAME, नई स्ट्रिंग [] {alertType_COLUMN}, "MAX (" + अलर्ट। कॉलम। KEY_ALERT_UNIX_TIME + ")" + और + चेतावनी। कॉलम। KEY_MACHINE_TELE_DEVICE_NO + EQUALS + और + सतर्क टाईप_लओमएन + IS_NOT_NULL, नई ​​स्ट्रिंग [] {String.valueOf (टेली डिविई नो)}, रिक्त, रिक्त, चेतावनी। कॉलम। KEY_ALERT_UNIX_TIME);  

मिल रही त्रुटि

  (1) कुल कार्य MAX () का दुरुपयोग: android.database.sqlite.SQLiteException: दुरुपयोग कुल मिलाकर फ़ंक्शन MAX () (कोड 1):, संकलन करते समय: इग्निशन_स्टेटस से चेतावनी WHERE MAX (unix_time) और tele_device_no = से चयन करें? और ignition_status android.database.sqlite.SQLiteConnection.acquirePreparedStatement (SQLiteConnection.java:1113) android.database.sqlite.SQLiteConnection.prepare पर पर android.database.sqlite.SQLiteConnection.nativePrepareStatement (मूल निवासी विधि) (कम से unix_time द्वारा शून्य क्रम नहीं है । android.database.sqlite.SQLiteSession.prepare (SQLiteSession.java:588) android.database.sqlite.SQLiteProgram पर है & lt पर SQLiteConnection.java:686); init & gt; (SQLiteProgram.java:58) android.database.sqlite पर। SQLiteQuery। & lt; init & gt; (SQLiteQuery.java:37) android.database.sqlite.SQLiteDirectCursorDriver.query (SQLiteDirectCursorDriver.java:44) android.database.sqlite.SQLiteDatabase.rawQueryWithFactory पर (SQLiteDatabase.java:1420) एंड्रॉयड पर पर। database.sqlite.SQLiteDatabase.queryWithFactory android.database.sqlite.SQLiteDatabase.query (SQLiteDatabase.java:1138) पर (SQLiteDatabase.java:1267) android.database.sqlite.SQLiteDatabase.query पर (SQLiteDatabase.java:1306) com पर .jd.database.DBUtils.query (DBUtils.java:473) पर Com.jd.database.AlertDBUtils.getLatestNotValueForType_COLUMN_ByTeleDeviceNo (AlertDBUtils.java:161) पर com.jd.sms.SMSIntentService.parseE1_VehicleMovemenEvent (SMSIntentService.java158) com.jd.sms.SMSIntentService.parseMsgAndInputInDb पर (SMSIntentService.java:1222) com.jd.sms.SMSIntentService.processMessage (SMSIntentService.java:97) com.jd.sms.SMSIntentService.procassRequest (SMSIntentService.java:71) com.jd.sms.SMSIntentService.onHandleIntent पर पर (SMSIntentService.java:39 पर ) Android.app.IntentService $ ServiceHandler.handle एंड्रॉइड पर एंड्रॉइड.ओएस.हाण्डलर डिस्पेच मेसेज (हैंडलर.जावाः 99) एंड्रॉइड। लो। लूपर। लोप (लूपर.जावाआडर 776) पर एंड्रॉइड। .os.HandlerThread.run (HandlerThread.java:60) android.database.sqlite.SQLiteException: समेकित फ़ंक्शन मैक्स के दुरुपयोग () (कोड 1): है, जबकि संकलन: चेतावनी से चयन ignition_status कहां मैक्स (unix_time) और tele_device_no =? और इग्निशन_स्टैटस एंड्रॉइड। डेटाबेस में स्कैन करें। SQLiteConnection.nativePrepareStatement (मूल विधि) पर android.database.sqlite.SQLiteConnection.acquirePreparedStatement (SQLiteConnection.java:1113)  

संक्षेप में मैं क्वेरी SELECT ignition_status को चेतावनी WHERE MAX (unix_time) और tele_device_no = से कोशिश कर रहा / रही हूं? और इग्निशन_स्टैटस नक्सल से नहीं है

तो क्या dbUtilsObj.query () ऊपर जाना चाहिए? कम से कम कृपया मुझे सही कच्ची क्वेरी बताएं।

आप एक समग्र फ़ंक्शन का उपयोग नहीं कर सकते जैसे कि MAX

इसके बजाय निम्नलिखित पर विचार करें:

  • अनइसीटीम डीईएससी द्वारा आदेश सॉर्ट करने के लिए आपके चयन को नवीनतम से पहले मेल खाने वाले परिणाम।

  • सीमित 1 केवल पहले परिणाम यानी सबसे नवीनतम वापसी।


No comments:

Post a Comment