77 messaggi dal 24 giugno 2005
vedo che il mio post è molto visitato ma non ha alcuna risposta...  CATTIVONI!!!
a questo punto mi sorge il dubbio che il quesito non sia stato posto nella maniera giusta... in tal caso, fatemi sapere di quale informazione in più avete bisogno... nel frattempo (cosa che non ho fatto prima) posto di seguito la stringa di estrazione dati:

SELECT * FROM offerte WHERE ... (vari filtri, funzionanti) ORDER BY dataorapubblicazione DESC


ecco, io provato in questi modi:

SELECT FIRST 2 FROM offerte WHERE ... (vari filtri, funzionanti) ORDER BY dataorapubblicazione DESC

(errore)

SELECT TOP 2 * FROM offerte WHERE ... (vari filtri, funzionanti) ORDER BY dataorapubblicazione DESC

(funziona ma mi estrae i primi 2 records anzichè solo il 2° come serve a me)

SELECT * FROM offerte WHERE ... (vari filtri, funzionanti) ORDER BY dataorapubblicazione DESC LIMIT 1

(errore)

SELECT * FROM offerte WHERE ... (vari filtri, funzionanti) ORDER BY dataorapubblicazione DESC LIMIT 1, 1

(errore)

niente da fare insomma... vi ringrazio per qualunque aiuto saprete darmi!
ciao!
t.
501 messaggi dal 09 giugno 2006
Contributi
Ciao.

In effetti qualche informazione in più non guasta. Dal momento che scrivi nel forum ASP Base presumo tu stia lavorando con ASP e, spero, SQL Server (quale versione?).

Che io sappia non esiste una istruzione SQL per il comando SELECT che consenta di estrarre esattamente il record "n" di un resultset almeno che tale restrizione non sia riconducibile e applicabile nella clausola WHERE.

Il bello dell'informatica è che per ottenere lo stesso risultato si possono percorrere diverse strade. Provo a suggerirtene qualcuna lasciando aperta la discussione.

1. Prima di tutto userei la forma "SELECT TOP 2 ..." in quanto ottimizza la query estraendo solo i primi due record utili. La condizione ORDER BY, per la cronaca, implica comunque che l'intero resultset sia letto e, dopo l'ordinamento, solo le prime due righe siano restituite al client.

2. A questo punto nella tua pagina ASP utilizzi l'oggetto recordset associato alla query eseguendo per due volte il metodo .MoveNext/.Move (o, se il cursore lo permette puoi utilizzare .MoveLast, oppure ".Move 2, adBookmarkFirst" o altro ancora). A questo punto dovresti essere posizionata nel record corretto (assumo che la tua query ritorni sempre due record e non esistano casi in cui venga restituito un solo record).

3. Un'altra ipotesi, che preferisco, è utilizzare una stored procedure che estragga i due record su una tabella in memoria (MEMORY TABLE) e, successivamente, restituisca al client solo il secondo record. Questo presume che tu stia utilizzando SQL Server o comunque un motore SQL che supporti le stored procedure (quindi non Access).

Ciao.

.:. Marcello Rutter .:.
252 messaggi dal 03 dicembre 2001
www.fuossbook.it
con TOP 2 e il tuo order by, estrai i primi due non il secondo,
scusa, non è la soluzione più adatta forse, ma se
fai una select con top 2 e poi dopo aver aperto il recordset fai un movelast e poi leggi il campo

***************************
webmaster di:
hydrasail.blogspot.it
fuossbook.it
***************************
77 messaggi dal 24 giugno 2005
Ciao e grazie per le risposte!
Le ho lette entrambe e mi pare di capire che il metodo TOP 2 sia condiviso da entrambi, quindi sarei più orientata a seguire questa strada... ma c'è un problema: non ho capito il discorso del movelast...
cioè, io ho questo codice html...

<div id="vetrinahp1">
qui estraggo i dati del primo record
</div>


...e me la cavo con una semplice "SELECT * FROM offerte ORDER BY dataorapubblicazione DESC" ... andiamo avanti...

<div id="vetrinahp1">
qui estraggo i dati del secondo record
</div>


...pensavo di cavarmela in questo modo:

SELECT TOP 2 * FROM offerte ORDER BY dataorapubblicazione ASC


...dove praticamente estraggo i primi 2 record in ordine di pubblicazione, quindi tramite l'order by ascendente anzichè discendente in teoria dovrei estrarre il secondo... invece, non so come mai, mi estrae l'ultimo record, cioè quello con la data di pubblicazione più vecchia!!!

dove sbaglio? ho forse non c'ho capito niente io?!?

252 messaggi dal 03 dicembre 2001
www.fuossbook.it
ma che fai due query uguali?
io ne farei una sola

e dentro un ciclo do until ti crei i due div
con i due recodr estratti

***************************
webmaster di:
hydrasail.blogspot.it
fuossbook.it
***************************