Newsgroup: it.comp.www.php
Titolo: [InterBase] Limit

Come si fa il limit ad un SELECT??????!?
Con mySQL la sintassi è SELECT ... FROM ... LIMIT 0,x
In IB LIMIT non è accettato...
M'aiutate?!?
Ciao, Davide "Rocker"
http://www.phparea.f2s.com


ciao rocker,
Hai provato ad usare solamente LIMIT 5 (esempio!), giusto per verificare il
fnizonamento?
Stessa persona  - Diversa domanda - Stessa risposta
naturalmente scherzo!! il fatto è che si adattava perfettamente ;-)
$comando=LIMIT
echo "
poi al limite prendi il manuale di IB e vedi che "dialetto" SQL utilizza e
vedi la sintassi di $comando e ci metti 1 attimo.
Ribadisco di IB conosco solo il nome :-))
Naturalmente facci sapere ;-)
";
--
paolo tosciri    ---   ICQ 119427174
e-mail: 
webm...@liara.com
sito di riferimento: 
www.liara.com

 Come si fa il limit ad un SELECT??????!?
Nella ultima release di Firebirdb (
http://firebird.sourceforge.net/
) 
non e` presente la keyword LIMIT. 
L'ultima release e` la 1.0.0 Beta2. 
Negli snapshot le keyword LIMIT e FIRST sono state aggiunte dal 28/7. 
Quindi potresti scaricarti appunto una versione piu` recente ma forse 
conviene aspettare la prossima release che conterra` oltre a LIMIT e 
FIRST anche TOP.
-- 
Vincenzo 
A volte a Lourdes i film muti si mettono a parlare.

 ha scritto nel messaggio
news:3BA1BB87...@cometweb.it...


 ha scritto nel messaggio
news:Pgho7.54113$ul3.1...@news.infostrada.it...


 Non c'è un modo per farlo???
http://firebird.sourceforge.net/download_Nightly_Builds.php
Ma ricorda che sono versioni non testate per cui io ci penserei 
due volte prima di metterle su un server di produzione. Almeno
fai dei test su tutte le funzioni della tua applicazione per
assicurarti che non siano stati introdotti errori.



Ti serve per la paginazione o per evitare di estrarre troppi record?


 ha scritto nel messaggio
news:sflo7.55740$ul3.1...@news.infostrada.it...


 assicurarti che non siano stati introdotti errori.
Purtroppo non me lo posso permettere.
Sto scrivendo un'applicazione che avrà un casino di visitatori al giorni,
con un carino di lavoro giornaliero non indifferente, e non mi posso
permettere di utilizzarlo: ho bisogno di cose solide!
Cmq proverò a compilarlo sulla mia macchina.
Grazie di tutto, Davide "Rocker"
http://www.phparea.f2s.com

 Cmq proverò a compilarlo sulla mia macchina.
Non c'e' bisogno, trovi direttamente la versione gia` compilata.
-- 
Vincenzo 
Cosa e' peggio: l'ignoranza o l'apatia?  Chi lo sa?  A chi importa?

 Per la paginazione...
Verrň lapidato per questa soluzione, ma io avrei fatto cosě ...
1) con il famoso "SELECT COUNT(*) AS ... " conto i record effetivamente
estratti.
2) Eseguo un ciclo while sull'array ottenuto, all'interno delle parentesi
graffe inserisci un contatore. Con un IF fai stampare le righe che
corrispondono a quelle che avresti inserito con il limit basandoti sul
contatore.
spero di essere stato chiaro.


 Verrò lapidato per questa soluzione, ma io avrei fatto così ...


In IB LIMIT non è accettato...
Potresti bypassare creandoti un array delle chiavi primarie
ritornate dalla SELECT generale, poi per il display fai
la stessa query con una WHERE che riporta le N chiavi che 
interessano la pagina che devi mostrare.
Non so quanto buona sia come soluzione, ma tant'e'.
-- 
Filippo "Kirone" Zamengo 
Quanto scritto deve ritenersi IMHO e indipendente dal datore di lavoro
e-mail modificata: togliere DESPAM e .invalid

Avevo anche io avevo lo stesso problema,
su un formu  ( mi sembra 
better-office.com
) mi hanno consigliato di
usare le stored procedure
questo e' quello che mi hanno risposto, non l'ho ancora mai provato
You can limit in interbase by using a stored procedure:
something like
set term ^;
create procedure sp_GetHits(
  hitStr varchar(50),
  intervalStart integer,
  intervalStop integer
) returns (
  userpk integer,
  firstname varchar(50),
  lastname varchar(50)
) as
  declare variable i integer;
begin
  i=1;
  for select userpk,firstname,lastname where firstname like '%' ||
hitStr ||
'%'
  do begin
    if (i>=intervalStart) then suspend;
    if (i=intervalStop) then exit;
    i=i+1;
  end
end ^
Ciao
Osvaldo


Non c'è un modo per farlo???
Certamente. Fai la query SENZA il LIMIT, leggi tutti i dati, e scarti
tutti quelli che non ti servono.
Se vuoi usare qualcosa del tipo, "venti results per pagina"... esegui
la query, e crei N "oggetti-pagina" sul file system, per esempio, con
un qualche ID unico che venga riciclato entro un tot da valutare. Poi
puoi andare avanti e indietro di pagina in pagina.
E ha anche il vantaggio che fai una query sola, indipendentemente dal
movimento che fai fra le sottopagine.
Io di solito faccio cosi', per mantenere la portabilita' fra i DB. La
LIMIT e' una keyword un po' fetecchia.
Leonardo
-- 
Nior thainig ar major i dtus an lae chugainn,
is ni rabhamar fein ann i gcoir na gceart
ach mar sheolfai aoireacht bo gan aoire,
ar thaobh na greine de Sliabh na mBan.