PDA

View Full Version : [SQL] query dal fondo


SteR9
25-04-2006, 18:34
ragazzi ho bisogno di estrarre da una tabella n elementi partendo dal fondo
una cosa tipo SELECT * FROM tabella LIMIT fondo,30.
Si può fare?

andbin
25-04-2006, 18:48
ragazzi ho bisogno di estrarre da una tabella n elementi partendo dal fondo
una cosa tipo SELECT * FROM tabella LIMIT fondo,30.
Si può fare?Fai una SELECT COUNT(*) FROM tabella per ottenere il numero totale di righe e poi imposti fondo per la tua select in modo opportuno.

VICIUS
25-04-2006, 19:04
Non basta invertire l'ordinamento e poi usare LIMIT 0,30 ?

ciao ;)

anonimizzato
25-04-2006, 19:10
Puoi fare come hanno detto entrambi.

Conti i record e poi fai tipo:

tot = 100
ultime30 = LIMIT 100-30,30

oppure fai un sort inverso e pigli le prime 30.

Ciao

SteR9
25-04-2006, 20:31
ci avevo già pensato di usare count ma non mi funziona.. faccio così
SELECT * FROM tabella LIMIT (SELECT COUNT(*) FROM tabella)-30,30
per quanto riguarda la selezione inversa non posso perchè voglio che mi rimangano ordinati.

SteR9
25-04-2006, 20:34
ah.. ovviamente vorrei fare la query annidata.. ovviamente facendo due query separate funziona.. :)

andbin
25-04-2006, 20:55
SELECT * FROM tabella LIMIT (SELECT COUNT(*) FROM tabella)-30,30Credo proprio che non si possa fare. Una select, in generale, fornisce un "recordset", non un valore scalare. Sarebbe troppo comodo eh ... ;)

caracca
25-04-2006, 21:13
Da quel che ho capito tu vuoi un ordinamento in base a come è composta la tabella, senza dover fornire chiavi di ordinamento.

Ecco la soluzione.

Avendo una Tabella1 contenente cognome e nome

In SQL Puro
SELECT Count(*) AS NumeroRiga, a1.cognome, a1.nome
FROM tabella1 AS a1, tabella1 AS a2
WHERE a1.cognome+a1.nome>=a2.cognome+a2.nome
GROUP BY a1.cognome, a1.nome
ORDER BY Count(*) desc;

Con Oracle, usando sue funzioni
SELECT ROWID, cognome, nome
FROM Tabella1
ORDER BY ROWID Desc

Spero di essere stato utile

SteR9
25-04-2006, 21:43
no, io non voglio un ordinamento, la mia tabella è già ordinata come voglio io. Quello che a me interessa è estrarre gli ultimi n record inseriti ordinati come sono inseriti nella tabella.
Userò le due query allora, mi sa che è l'unica soluzione.
grazie :)