2011-01-07 13 views
1

Ich habe Offset in SimpleDb versucht, aber es funktioniert nicht, wie es in MySQL funktioniert, und ich möchte für meine Datenbank API in php paging, so dass ich die Seitenzahl und Seitenlänge an die Abfrage senden, und es wird die zurückgegeben Daten nur dieser Seite. Wie kann ich das in SimpleDb tun?Paginierung in SimpleDb

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

als Offset funktioniert nicht, so kann ich Offset in Abfrage nicht hinzufügen. Ich habe google und finde, dass es das nächste Token zurückgegeben wird, aber ich bekomme kein nexttoken. wie nach nexttoken zu überprüfen.

Bitte helfen.

Dank

Antwort

1

Durch die Verwendung von Nexttoken in einfachen db Fertig

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

Hier Offset $ nexttoken Zeichenfolge, die in Abfrage übergeben wird. und kehrt zur nächsten Seite zurück.

1

$ pagelenght sein sollte:

$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 

so etwas wie dieses, erste Zahl ist, aus der Reihe, und das zweite ist die Nummer, wie viele Elemente auf einer Seite.

+0

aber das funktioniert nicht in simpledb, kann ich falsch liegen – XMen

+0

Ich denke, das ist MySQL Syntax – nico

0

Ich bestätige, dass LIMIT in SimpleDB nur ein Argument dauert.

Um sicher zu sein, habe ich die folgende Abfrage versucht (die Domain Person existiert): „SELECT * FROM Person LIMIT 20, 20“ und ich hatte die folgende Antwort: Client-Fehler: Der Abfrageausdruck angegebene Syntax ist ungültig .

Auch wenn limit nicht angegeben ist, wendet SimpleDB ein Standardlimit 100 an, das maximale Limit ist 2500 rows. Ich möchte betonen, dass LIMIT anders funktioniert als andere Datenbanken. LIMIT 100 bedeutet, dass Sie 100 Ergebnisse pro Mal erhalten, und Sie erhalten einen weiteren Stapel von 100 Ergebnissen mit dem nächsten Token (sofern natürlich genügend Daten vorhanden sind).

Die Art der Paginierung ist die Verwendung von Tokens. Bereits erhaltene Token können in der Sitzung gespeichert werden, so dass es möglich ist, zu vorherigen Seiten zurückzukehren.

3

Pro Simpledb-Team (diese Frage wurde in ihren Foren gestellt) mit dem nächsten Token ist die Art und Weise, es zu tun.

Wenn Sie greifen wollen, sagt das 2500-2600th Element aus einer Liste und nicht über die ersten 2500 iterieren, das SimpleDB Team empfiehlt eine Zählung tun (*) bis 2500, weil es schnell ist, greift dann die nächste Token aus diesem Ergebnis und geben Sie dann Ihre echte Abfrage aus, um die Namen und Attribute zu ziehen.

Cleverer Hack zu der Tatsache, dass Limit keinen Startindex braucht, dachte ich, aber sollte dir etwas Leistung sparen. Ich wollte das nur teilen.

+0

Haben Sie einen Link zu dem Thread auf diesem? Wenn das wahr ist, dann ist es nicht gut bekannt. Die meisten Leute sagen, dass es nicht möglich ist, sich auf diese Seite zu begeben. Würde gerne wissen, ob es immer maximal 2 Abfragen gibt, um zum angegebenen Offset zu kommen. - Gefunden https://forums.aws.amazon.com/message.jspa?messageID=253237#253237 – jmathai

+0

Gut gefunden, ich dachte, ich erinnere mich an jemanden aus dem SDB-Team + 1-inging diese Idee auch einmal, vielleicht ich Ich erinnere mich nur falsch. Danke, dass du das hier verlinkt hast. –