2014-09-08 1 views
2

это мой первый пост здесь. Я делаю первые шаги с Parse.com, и теперь у меня есть проблема, которую я не смог решить. Прежде чем задать вопрос, я искал решение, но ничего не нашел.Вложения и/или условия с Parse.com

Дело в том, что я должен извлекать записи из таблицы в соответствии со значениями двух разных столбцов.

Давайте рассмотрим следующую таблицу:

idSection idItem 
--------- ------ 
1    10 
1    11 
1    12 
2    20 
2    21 
2    22 
2    23 
3    31 
3    32 
3    33 

Что мне нужно, чтобы создать выбор из «и»/«или» условия следующим образом:

select * 
from table1 
where (idSection = 1 and idItem > 11) 
    or (idSection = 2 and idItem > 22) 
    or (idSection = 3 and idItem > 32) 

Любые идеи ?. Спасибо заранее.

+0

Думаю, вам нужно будет сделать 3 отдельных запроса. Функция CloudCode, вероятно, лучший путь для перехода. – Dehli

+0

Вы работаете на javascript или мобильном? – ccwasden

+0

Выполнение 3 разных запросов было первой мыслью, но я должен был быть лучше aproach. Более того, это не было бы «элегантным», и поскольку я использую бесплатную учетную запись Parse, у меня есть предел количества запросов. Ответ ccwasden работал нормально. В любом случае, спасибо. –

ответ

2

Если вы в прошивке, вы можете сделать это:

NSPredicate * pred = [NSPredicate predicateWithFormat:@"(idSection = 1 and idItem > 11) or (idSection = 2 and idItem > 22) or (idSection = 3 and idItem > 32)"]; 
PFQuery * q = [PFQuery queryWithClassName:@"MyClass" predicate:pred]; 
[q findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { 
    NSLog(@"OBJ : %@",objects); 
}]; 

Если JavaScript, сделайте следующее:

var clz = "MyClass"; 

var q1 = new Parse.Query(clz); 
q1.equalTo("idSection", 1); 
q1.greaterThan("idItem", 11); 

var q2 = new Parse.Query(clz); 
q2.equalTo("idSection", 2); 
q2.greaterThan("idItem", 22); 

var q3 = new Parse.Query(clz); 
q3.equalTo("idSection", 3); 
q3.greaterThan("idItem", 32); 

var mainQuery = Parse.Query.or(q1,q2,q3); 
mainQuery.find({ 
    success: function(results) { 

    }, 
    error: function(error) { 

    } 
}); 

Android похож на JavaScript .. см "или" метод в ParseQuery класс здесь https://parse.com/docs/android/api/

+0

Большое спасибо за ваш ответ. Я клянусь, что я искал в Интернете, прежде чем спрашивать, и первое, что я рассмотрел, это api Parse, и я не нашел функцию «или». Я видел, как он использовался в javascript, как и вы, но не смог увидеть его для Android. Я попробую это сегодня днем. –

+0

Он отлично работал. Большое спасибо. –

Смежные вопросы