PDA

View Full Version : SQL - Gestire la restituzione delle righe di una query


IoDaniela
18-07-2006, 15:35
Ciao a tutti,
vorrei sapere se esiste una sintassi particolare che mi permetta di farmi restituire le prime 1000 righe o le seconde 1000, di una query. Il TOP non mi basta.

Grazie in anticipo

trallallero
18-07-2006, 15:49
Ciao a tutti,
vorrei sapere se esiste una sintassi particolare che mi permetta di farmi restituire le prime 1000 righe o le seconde 1000, di una query. Il TOP non mi basta.

Grazie in anticipo
WHERE ROWNUM < 1001

e vale solo per le prime 1000 perché se fai
WHERE ROWNUM > 1000
alla prima riga la condizione é falsa quindi si interrompe la query.

Black imp
18-07-2006, 16:00
mi sembra ci sia un comando che conta le uscite della query... num? non ricordo ... se riesco dopo controllo

[edit] mi hanno più esaurientemente preceduto :)

trallallero
18-07-2006, 16:03
mi sembra ci sia un comando che conta le uscite della query... num? non ricordo ... se riesco dopo controllo

[edit] mi hanno più esaurientemente preceduto :)
peró se trovi un modo per le seconde 1000 ... io non saprei, non mi é mai servito ma sarebbe carino trovare una soluzione intelligente.
Magari col rowid ...
c'é da pensarci ...

Davide.Prina
18-07-2006, 16:05
vorrei sapere se esiste una sintassi particolare che mi permetta di farmi restituire le prime 1000 righe o le seconde 1000, di una query. Il TOP non mi basta.


queste istruzioni dipendono dal database che stai utilizzando. Non tutti i database forniscono tale possibilità.

Per esempio con postgresql è possibile far ritornare intervalli di valori

Che db usi?

Ciao
Davide

Black imp
18-07-2006, 16:05
peró se trovi un modo per le seconde 1000 ... io non saprei, non mi é mai servito ma sarebbe carino trovare una soluzione intelligente.
Magari col rowid ...
c'é da pensarci ...


faccio un po' di documentazione per l'università e poi cerco nella pausa ... :muro:

IoDaniela
18-07-2006, 16:09
Per farmi restituire le prime 1000 non ho problemi, posso tranquillamente utilizzare il TOP, il mio problema sono per l'appunto le seconde.

Ho il SQL Server Enterprise Manager.

Davide.Prina
18-07-2006, 17:16
Ho il SQL Server Enterprise Manager.

mi spiace non uso quel prodotto ... non saprei proprio

Se puoi scegliere il db da usare io ti consiglio moltissimo postgresql (www.postgresql.org) ... è davvero eccezionale, completo e potente.

Ciao
Davide

trallallero
19-07-2006, 07:55
:mbe: che db usi ???
non ci metto la mano sul fuoco ma son quasi sicuro che ROWNUM sia ANSI SQL quindi funziona su tutti i db relazionali.
Per le seconde 1000 righe avrei una soluzione ma mi sa che é troppo complessa, non ne esci piú fuori :stordita:

cionci
19-07-2006, 09:08
Che io sappia non è ANSI...

Access e MSSQL dovrebbero usare la SELECT TOP 1000, altri usano ROWNUM, MySQL usa SELECT .... FROM .... LIMIT 1000...

trallallero
19-07-2006, 09:47
Che io sappia non è ANSI...

Access e MSSQL dovrebbero usare la SELECT TOP 1000, altri usano ROWNUM, MySQL usa SELECT .... FROM .... LIMIT 1000...
'azz, a furia di usarlo :D

Guarda invece cosa dice qui (http://archives.java.sun.com/cgi-bin/wa?A2=ind9912&L=jsp-interest&O=A&P=89329):

> > -----Original Message-----
> > From: Nicholas Barrington
> [SMTP:Nicholas.Barrington@COLESMYER.COM.AU]
> > Sent: Wednesday, December 22, 1999 8:57 AM
> > To: JSP-INTEREST@JAVA.SUN.COM
> > Subject: Re: OFF TOPIC: SQL
> >
> > ANSI SQL supports the TOP predicate. It works like this :
> >
> > SELECT TOP 10 * FROM my_table;
> >
che non é assolutamente vero, oracle per esempio TOP non sa cosa sia
:what: boh ?

Davide.Prina
19-07-2006, 13:52
:mbe: che db usi ???
non ci metto la mano sul fuoco ma son quasi sicuro che ROWNUM sia ANSI SQL quindi funziona su tutti i db relazionali.


rownum è utilizzato da Oracle ... non conosco altri db che lo utilizzino.

Ciao
Davide