2011-01-07 6 views
1

Я пробовал смещение в simpledb, но он не работает, поскольку он работает в mysql, и я хочу сделать подкачку для моей базы данных api в php, чтобы я отправил pagenumber и pagelength в запрос, и он вернет данные только этой страницы. Как это я могу сделать в simpledb.pagination in simpledb

select * from second 
where time_stamp is not null and gibid = '54' and gibview = 'O' 
order by time_stamp asc limit $pagelength 

как смещение не работает, поэтому я не могу добавить смещение в запросе. У меня есть google и найти, что появился следующий токен, но я не получаю nexttoken. как проверить на следующийtoken.

Пожалуйста, помогите.

Благодаря

ответ

1

делается с помощью NextToken в простом дб

$files = $this->db->select($domain, $query, $offset) 

Здесь $ смещение nexttoken строка, которая будет проходить в запросе. и вернется на следующую страницу.

1

$ pagelenght должно быть:

$pagenum = 4; //current page 
$numitems = 20; //items per page 
$row_from = $pagenum * $numitems - $numitems; 
$pagelenght = $row_from.','.$numitems; 


in the end pagelenght should look like this 
$pagelenght = '0,20'; //first page 
$pagelenght = '20,20'; //second page 
$pagelenght = '40,20'; //third page 
$pagelenght = 60,20'; //forth page 

что-то вроде этого, первый номер, из какой строки, а второй является количество, сколько элементов в одной странице.

+0

но это не работает в simpledb, я могу ошибаться – XMen

+0

Я думаю, что это синтаксис MySQL – nico

0

Я подтверждаю, что LIMIT в SimpleDB принимает только один аргумент.

Чтобы быть уверенным, я попробовал следующий запрос (домен Person существует): «SELECT * FROM Person LIMIT 20, 20», и у меня был следующий ответ: ошибки клиента: Указанный синтаксис выражения запроса не является допустимым ,

Даже если ограничение не указано, SimpleDB применяет предел по умолчанию 100, максимальный предел составляет 2500 строк. Я хочу подчеркнуть, что LIMIT работает иначе, чем другие базы данных. LIMIT 100 означает, что вы получите 100 результатов за раз, и вы получите еще одну партию из 100 результатов со следующим токеном (при условии, что данных достаточно, конечно).

Способ использования разбивки на страницы - использовать токены. Уже полученный токен может быть сохранен в сеансе, поэтому можно вернуться к предыдущим страницам.

3

Для команды Simpledb (этот вопрос задавали на форумах), используя следующий токен, это способ сделать это.

Если вы хотите захватить, скажем, 2500-2600-й элемент из списка и не перебирать первые 2500, команда simpledb рекомендует делать счетчик (*) до 2500, потому что это быстро, а затем захватывает следующий токен из этого результата, а затем выдавать ваш реальный запрос, чтобы вытащить имена и атрибуты.

Умный взломать тот факт, что лимит не принимает начальный индекс, я думал, но должен сэкономить вам некоторую производительность. Просто хотел поделиться этим.

+0

У вас есть ссылка на эту тему? Если это так, то это не очень хорошо известно. Большинство людей говорят, что это невозможно, если вы не дойдете до этой страницы. Хотелось бы узнать, всегда ли максимум 2 запроса, чтобы добраться до указанного смещения. - Нашел его https://forums.aws.amazon.com/message.jspa?messageID=253237#253237 – jmathai

+0

Хорошая находка, мне показалось, что я помню кого-то из команды SDB + 1-ing, что идея тоже, возможно, я я просто помню неправильно. Спасибо, что связали это здесь. –