anshika
anshika

Reputation: 121

How to achieve or query in parse sdk in android

i have used ParseQuery mainQuery = ParseQuery.or(queries); but it is getting crash as Cannot have an order in sub queries of an 'OR' query

Upvotes: 1

Views: 211

Answers (4)

anshika
anshika

Reputation: 121

ParseQuery<ParseObject> vid_name_q = ParseQuery.getQuery(ErosConstant.TABLE_CAT_VID);                
vid_name_q.whereContains(ErosConstant.COL_VIDEO_NAME, search_val);                   
vid_name_q.orderByDescending(ErosConstant.Col_USED_COUNTER);

if(prod_arr_list.size() > 0)
    vid_name_q.whereContainedIn("prod_id", prod_arr_list);

ParseQuery<ParseObject> actor_name_q = ParseQuery.getQuery(ErosConstant.TABLE_CAT_VID);              
actor_name_q.whereContains(ErosConstant.COL_ACTOR_NAME, search_val);              
actor_name_q.orderByDescending(ErosConstant.Col_USED_COUNTER);              

if(prod_arr_list.size() > 0)
    actor_name_q.whereContainedIn("prod_id", prod_arr_list);

ParseQuery<ParseObject> muv_tv_show_q =  ParseQuery.getQuery(ErosConstant.TABLE_CAT_VID);             
muv_tv_show_q.whereContains(ErosConstant.COL_MUV_TV_SHOW_NAME, search_val);               
muv_tv_show_q.orderByDescending(ErosConstant.Col_USED_COUNTER);          

if(prod_arr_list.size() > 0)
    muv_tv_show_q.whereContainedIn("prod_id", prod_arr_list);

// add this all query in list:
List<ParseQuery<ParseObject>> queries = new ArrayList<ParseQuery<ParseObject>>();
queries.add(vid_name_q);
queries.add(actor_name_q);
queries.add(muv_tv_show_q);

// get result which is as "OR"
ParseQuery<ParseObject> mainQuery = ParseQuery.or(queries);

This is my query which crashes at ParseQuery.or(queries) and is saying

Cannot have an order in sub queries of an 'OR' query

Upvotes: 0

Hardik Parmar
Hardik Parmar

Reputation: 712

i have worked fine this way .

    ParseQuery<ParseObject> namelower = new ParseQuery<ParseObject>(
            "vendorstore");
    namelower.whereContains(superMarket.key_bizname, strEdit);

    ParseQuery<ParseObject> catPrimary = new ParseQuery<ParseObject>(
            "vendorstore");
    catPrimary.whereContains(superMarket.key_catprimary, strEdit);

    ParseQuery<ParseObject> City = new ParseQuery<ParseObject>(
            "vendorstore");
    City.whereContains(superMarket.key_city, strEdit);

    ParseQuery<ParseObject> State = new ParseQuery<ParseObject>(
            "vendorstore");
    State.whereContains(superMarket.key_state, strEdit);

    ParseQuery<ParseObject> Country = new ParseQuery<ParseObject>(
            "vendorstore");
    Country.whereContains(superMarket.key_country, strEdit);

    ParseQuery<ParseObject> catSub = new ParseQuery<ParseObject>(
            "vendorstore");
    catSub.whereContains(superMarket.key_cat_sub, strEdit);

    ParseQuery<ParseObject> zipcode = new ParseQuery<ParseObject>(
            "vendorstore");
    zipcode.whereContains(superMarket.key_zipcode, strEdit);

    List<ParseQuery<ParseObject>> addQuery = new ArrayList<ParseQuery<ParseObject>>();
    addQuery.add(namelower);
    addQuery.add(catPrimary);
    addQuery.add(City);
    addQuery.add(State);
    addQuery.add(Country);
    addQuery.add(zipcode);
    addQuery.add(catSub);

    ParseQuery<ParseObject> mainQuery = ParseQuery.or(addQuery);

    mainQuery.findInBackground(new FindCallback<ParseObject>() {

        @Override
        public void done(List<ParseObject> list, ParseException e) {
            // TODO Auto-generated method stub
            CommanClass.Pdialog_dismiss();
            if (e == null) {
                if (list.size() > 0) {
                    Log.e("Parse Object", "LL " + list.size());
                } else {
                    Log.e(key_TAG, "Not Found Record");
                }
            } else {
            }
        }
    });  

Upvotes: 0

Ved
Ved

Reputation: 1077

Please post your queries which are you passing in mainQuery = ParseQuery.or(queries); Generally or query called like this :

    ParseQuery<ParseObject> query1=ParseQuery.getQuery("comments");
    //Some conditions on query1

    ParseQuery<ParseObject> query2=ParseQuery.getQuery("comments");
    // Some conditions on query2

    List<ParseQuery<ParseObject>> listQuery=Arrays.asList(query1,query2);

    ParseQuery<ParseObject> query=ParseQuery.or(listQuery);
    // General condition for both queries also set order  here.

Upvotes: 0

Hemant Ukey
Hemant Ukey

Reputation: 328

Can you please put your code here or the log details ... \ this is the common process to query the data from parse.. follow the parse docs how to fetch the data

try {
                ParseQuery<ParseObject> query = ParseQuery.getQuery("ClassName");
                query.orderByDescending("Column Name");
                query.whereEqualTo(condition);



                ob = query.find();

Upvotes: 1

Related Questions