2014-03-19 4 views
0

Я попытался выполнить следующий запрос в Amazon SimpleDB и получил InvalidQueryExpression, сообщение об ошибке AWS: указанный синтаксис выражения запроса недействителен.SimpleDB - подзапросы или вложенные команды выбора?

SelectRequest selectRequest = 
    new SelectRequest("select itemName() from Quotes where name = '" + 
     myName + 
     "' and name in (select followedName from Following)"); 

Подзапросы или вложенные выборки просто не поддерживаются u SimpleDB? Ff так, как я могу сделать что-то вроде этого, не говоря о переключении баз данных?

ответ

0

Итак, я нашел https://forums.aws.amazon.com/thread.jspa?messageID=236456&#236456, в котором говорится, что он не поддерживает подзапросы. Вот обходной путь, который я использовал:

SelectRequest selectRequestNames = new SelectRequest("select followedName from Following where followedBy = '" + myName + "'").withConsistentRead(true); 
List<Item> names = getInstance().select(selectRequestNames).getItems(); 

String set = "("; 
for (int j = 0; j < names.size(); j++) { 
    set += "'" + names.get(j).getAttributes().get(0).getValue() + "',"; 
} 
set = set.substring(0, set.length() - 1) + ")"; 

SelectRequest selectRequest = new SelectRequest("select itemName() from Quotes where fbName in " + set + " and timestamp is not null order by timestamp desc").withConsistentRead(true); 
Смежные вопросы