Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    306

    una sola istanza con valore più alto

    in una tabella a 2 colonne coome questa:

    nomi valore
    a 3
    a 2
    b 4
    a 4
    c 5
    b 3
    c 9

    ...ho bisogno di ricavare solo un'istanza dei nomi col valore più alto, in questo caso:

    a 4
    b 4
    c 9

    come poter impostare una quey? vorrei fare tutto in un'unica estrazione per non scorrere tutti i valori del database...
    grazie

  2. #2
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    select distinct nomi, max(valore) as max_val from tua_tabella order by nomi desc

    non testata prova un pò

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    306
    Restituisce il seguente errore:

    [Microsoft][Driver ODBC Microsoft Access] Impossibile eseguire una query che non include l'espressione "nomi" specificata come parte di una funzione di aggregazione.

    però mi sono dimenticato di aggiungere un altro particolare, cioè oltre a quelli citati di un'unica istanza col valore massimo, devono avere tutti uno stesso valore di un terzo campo, per esempio: where 3campo = '018/06'

  4. #4
    codice:
    <%
    set conn = server.createObject("ADODB.Connection")
    conn.open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & server.mapPath("mdb-database\db.mdb")
    
    	sql = "SELECT DISTINCT(A.nomi) AS T1, MAX(B.valori) AS T2 " &_
    		"FROM tabella1 A " &_
    		"INNER JOIN tabella1 B " &_
    		"ON B.nomi = A.nomi " &_				
    		"GROUP BY A.nomi"
    	
    		set rs = conn.execute(sql)
    		
    			if not rs.eof then
    				do until rs.eof
    				response.write rs("T1") & " " & rs("T2") & "
    "		
    				rs.moveNext
    				loop
    			end if
    
                    rs.close
                   set rs = nothing
    
    conn.close
    set conn = nothing
    %>

  5. #5
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    ma lui ha una tabella mica 2....


    riproviamo...


    select max(nomi) as max_nomi, max(valore) as max_val from tua_tabella GROUP BY max(nomi),max(valore) where 3campo = tuovalore order by nomi desc

    oppure:


    select max(nomi) as max_nomi, max(valore) as max_val from tua_tabella GROUP BY max,nomi where 3campo = tuovalore order by nomi desc


    :master:

  6. #6
    Io ho usato una sola tabella mandadola in JOIN con se stessa.
    Funziona.
    Costruisciti l'esempio e verifica.

  7. #7
    age, tranquillo, se po' fa'. la tecnica si chiama SELF JOIN

  8. #8
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    credo che mems abbia ragione... avevo visto male...

    ma mi sembra eccessivo usare un innerjoin...

  9. #9
    Originariamente inviato da agenti
    ma mi sembra eccessivo usare un innerjoin...
    perché?

  10. #10
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    se funziona senza perchè usarla ?

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.