Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 27

Discussione: ordinamento da select

  1. #1
    Utente bannato
    Registrato dal
    Jan 2003
    Messaggi
    2,407

    ordinamento da select

    salve a tutti,

    come devo impostare la select per il recupero dei record dovendo ottenere questo risultato:

    pagina1 -> gli ultimi 10 record inseriti
    Pagina2 -> tutti i restanti record, mmeno gli ultimi dieci della pagina precedente, quindi meno gli ultimi 10.

    Grazie

  2. #2
    Prima pagina query con sintassi Top 10. Seconda pagina un MoveNext sul recordset per 10 volte o se sai l'ID dell'11 record un Move(idrecord)

  3. #3
    Utente bannato
    Registrato dal
    Jan 2003
    Messaggi
    2,407
    Originariamente inviato da weppos
    Prima pagina query con sintassi Top 10. Seconda pagina un MoveNext sul recordset per 10 volte o se sai l'ID dell'11 record un Move(idrecord)
    scusa ma per la prima pagina top10 non è sbagliato quando io voglio recuperare gli ultimi 10 della tabella?

    per la seconda pagina no l'ultimo id non lo conosco quindi devo per forza trovare il modo di prendere e tipo contare all'indietro fino a 10 per poi iniziare a visualizzare dall'undicesimo in dietro fino al record con id logico 1

  4. #4
    TOP 10 prende i primi 10 record se ordini ASC, gli ultimi 10 se ordini DESC, dato un determinato campo di ordinamento.

    Per la seconda allora fai 10 MoveNext come scritto oppure puoi fare una select con la clausula NOT IN ma non so quale sia più performante tra le due a dire il vero.

  5. #5
    Utente bannato
    Registrato dal
    Jan 2003
    Messaggi
    2,407
    dunque vediamo se ho capito un po'...

    nella prima pagina io dovrei fare una select del tipo:

    "select * from notizie top 10 order by data desc"

    ma per la seconda pagina purtroppo non capisco...

  6. #6
    La seconda fai una query normale e poi fai 10 MoveNext.
    Ogni MoveNext sul record sposta il cursore di 1 in avanti.

    Dopo 10 avrai passato 10 record, ergo sarai all'undicesimo.

  7. #7
    Utente bannato
    Registrato dal
    Jan 2003
    Messaggi
    2,407
    io la butto lì come una possibile soluzione, premettendo per altro che ho l'idea, non so se si possa realizzare e non saprei come realizzarla quindi spero che se l'idea e buona qualcuno possa indicarmi la via...

    dunque se io nella prima pagina:

    - aprissi il db
    - inizializzassi una variabile a 0
    - dopo di che faccio fare un ciclo al fine di conteggare il numero di record contenuti nella tabella, non l'id massimo, ma per esempio se esistesse un campo con id logico 51 e si scoprisse fosse l'unico allora fare in modo che quella variabile assuma valore (1)
    - a questo punto nella pagina far visualizzare tutti i record che stanno fra il valore della variabile e il valore della variabile -10.

    mentre nella seconda:

    - aprissi il db
    - inizializzassi una variabile a 0
    - dopo di che faccio fare un ciclo al fine di conteggare il numero di record contenuti nella tabella, non l'id massimo, ma per esempio se esistesse un campo con id logico 51 e si scoprisse fosse l'unico allora fare in modo che quella variabile assuma valore (1)
    - a questo punto visualizzare tutti i record che partono da valore variabile -11 fino a valore variabile = 1.

    non otterrei quello chemi sono prefisso?

  8. #8
    Utente bannato
    Registrato dal
    Jan 2003
    Messaggi
    2,407
    codice:
    <%
    
             Contarecordo=0
    
    		'apro la connessione con il db
    		set myConn = server.CreateObject("ADODB.Connection")
    		
    		dim strConnDb
    		strConnDb = ""
    		strConnDb = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " & server.mappath("/mdb-database/news.mdb")
    		myConn.Open(strConnDb)
    				
    		mySqlSelect = "select * from notizie order by Data desc"
    		
    		set myRSComS = server.CreateObject("ADODB.Recordset")
    		
    		myRSComS.Open mySqlSelect, myConn
    
    		if not(myRSComS.EOF) and not(myRSComS.BOF) then	
    	
    			do while not(myRSComS.EOF)	
    
    			  Contarecord=(Contarecord+1)
    			
    			myRSComS.MoveNext
    		loop
    	    else
    
    	    end if	
    %>
    perfetto così mi conteggia i record presenti nel db senza far base sul loro valore logico del loro id.

    ma ora come posso fare per dirgli di visualizzare nella pagina uno tutti i record a partire da contatorerecord ed arrivare a contatorerecord -10 sempre che ci siano + di 10 o 10 record perchè nel caso in cui siano meno di 10 allora vanno visualizzati tutti.

    idem per l'altra pagina dove se i contarecord è =10 o minore di 10 allora non deve visualizzarne nessuno mentre se contarecord maggiore di 10 alora visualizza tutti i record a partire da contarecord-10 fino a 0.

    Grazie

  9. #9

    Re: ordinamento da select

    Originariamente inviato da Certe Notti
    Pagina2 -> tutti i restanti record, mmeno gli ultimi dieci della pagina precedente, quindi meno gli ultimi 10.

    Grazie
    Per questo quesito applica questa query:

    codice:
    SELECT * FROM Tua_Tabella Where Id_Tua_tabella NOT IN (SELECT TOP 10 Id_Tua_tabella FROM Tua_Tabella ORDER BY Id_Tua_tabella desc) ORDER BY Id_Tua_tabella desc
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  10. #10
    Utente bannato
    Registrato dal
    Jan 2003
    Messaggi
    2,407

    Re: Re: ordinamento da select

    Originariamente inviato da maximum
    Per questo quesito applica questa query:

    codice:
    SELECT * FROM Tua_Tabella Where Id_Tua_tabella NOT IN (SELECT TOP 10 Id_Tua_tabella FROM Tua_Tabella ORDER BY Id_Tua_tabella desc) ORDER BY Id_Tua_tabella desc
    cipicchia VVoVe:

    quindi così?

    codice:
    SELECT * FROM notizie Where Id NOT IN (SELECT TOP 10 Id FROM notizie ORDER BY Id desc) ORDER BY Id desc

    considerando che la mia tabella ha nome notizie e che il campo id si chiama appunto Id??

    Aproposito dato che io devo ordinare queste notizie per data descrescente quindi la più recente la prima e la meno recente l'ultima cosa faccio modifico gli order by id desc in order by data desc?

    dove data è il campo di tipo data/ora

    Grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.