Questione : Come ottengo l'annotazione seguente e precedente di un'annotazione dell'obiettivo in un insieme delle annotazioni?

Alright, ho un'interfaccia del inbox che lascia i miei utenti leggere i loro messaggi. Il inbox è impaginato dal LIMITE e dal CONTRAPPESO di SQL…. il CONTRAPPESO è calcolato dalle annotazioni che sono visualizzate i periodi il campione del saught di numero di pagina ..... abbastanza. il

So un utente scatta sopra un messaggio particolare ed ho precedente | Navigazione seguente affinchè utente si muova attraverso i suoi messaggi…. di che cosa ho bisogno è un senso affinchè me afferri soltanto il conversation_id precedente dell'annotazione precedente e seguente da QUESTA annotazione. E se così accade che QUESTA annotazione sia il primo messaggio nel inbox, quindi il messaggio precedente deve allora essere l'ultimo messaggio nel inbox. Lo stessi se QUESTO messaggio è durano, il tasto seguente devono rotolare al primo messaggio nel inbox.

ora che ho:

$sql_2 = “conversation_id PRESCELTO da app_get_account_inbox_funk("„. $this->account_id. “"); “;

and dal PHP afferro il precedente e seguente secondo dove QUESTO conversation_id è trovato nell'allineamento di rinvio. Ciò è giusta, ma posso immaginare che una volta che gli utenti ha 1000 o più messaggi nel suo inbox questo definitivamente rallenterà le idee di page.

Any? Inoltre, uso i postgres. Thanks.
class= del

Risposta : Come ottengo l'annotazione seguente e precedente di un'annotazione dell'obiettivo in un insieme delle annotazioni?

Supponendo che i ids sono nella prova di ordine ascendente using il questo querys

- DOPO
$sql = “selezionano * A PARTIRE da app_get_account_inbox_funk in cui account_id=„. $this->account_id.„ E conversation_id> ". $this->conversartion_id. “ordine dal LIMITE 1 del conversation_id il ASC„;
- PRECEDENTE
$sql = “selezionano * A PARTIRE da app_get_account_inbox_funk in cui account_id=„. $this->account_id.„ E<> conversation_idconversartion_id. “ordine dal LIMITE 1 del conversation_id DESC„;
E nel caso dell'ultimo/in primo luogo del messaggio
- ULTIMO
$sql = “selezionano * A PARTIRE da app_get_account_inbox_funk in cui account_id=„. $this->account_id.„ ordine dal LIMITE 1 del conversation_id DESC ";
- IN PRIMO LUOGO
$sql = “selezionano * A PARTIRE da app_get_account_inbox_funk in cui account_id=„. $this->account_id.„ ordine dal LIMITE 1 del conversation_id il ASC ";
Altre soluzioni  
 
programming4us programming4us