Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Selezionare solo le voci coi valori più alti

    Salve, stò pensando una SQL che deve fare una cosa del genere:
    Selezionare da una tabella di progetti, solo e tutte le voci con gli importi più alti.
    Mi spiego meglio:
    -ho una tabella con x tipi di progetti
    -ciascun progetto ha un numero variabile di finanziatori, ciascuno col suo importo
    -devo estrarre solo il finanziatore più grosso per ciascun progetto

    Ho pensato ad usare Distinct per ottenere il nome del singolo finanziatore, il problema e che non ho un parametro con cui confrontare i singoli Importi....

    So di non essere stato chiaro, per cui metto la stringa che ho pensato fin ora:

    sql="SELECT DISTINCT(Nome_progetto),DISTINCT (Nome_partner),Ruolo,Importo FROM progetto WHERE Ruolo='Finanziatore' ORDER BY Importo"

    Così ottengo solo i nomi dei Finanziatori e dei progetti ordinati per Importo, ma li ottengo tutti....


    Suggerimenti?
    Grazie
    Rucker
    Questo spettacolo vi è stato offerto dalla dissenso cognitivo S.P.A:

  2. #2
    Utente di HTML.it L'avatar di wegawhite
    Registrato dal
    Aug 2004
    Messaggi
    1,400
    dovresti utilizzare la sintassi TOP; fai una ricerca sul forum...

  3. #3
    come dice wega

    sql="SELECT top K Nome_progetto,Nome_partner,Ruolo,Importo FROM progetto WHERE Ruolo='Finanziatore' ORDER BY Importo"

    seleziona i primi K nome_progetto,ruolo(che è inutile visto il where)...ecc...che hanno un Importo maggiore

  4. #4

    Non ho un parametro di paragone

    No, non mi sono spiegato....
    Io non ho la possibilità di sapere quanto è "K".
    Come dicevo nel mio post originale non ho una pietra di paragone, ma devo estrarre solo - e tutti, indipendentemente da quanti sono- i valori massimi per ogni progetto...



    Una idea che ho avuto è quella di mettere - ad ogni recordset- in una Dim separata i valori Nome_progetto e Importo, quindi quando passo ad un nuovo recordset confrontarli con quelli ottenuti tramite un IF/Else ma allora i tempi di connesssione al DB temo che diventino di una lunghezza abnorme...


    Altri suggerimenti?

    Grazie dell'aiuto
    Rucker
    Questo spettacolo vi è stato offerto dalla dissenso cognitivo S.P.A:

  5. #5
    come dici tu vuol dire che hai un tetto, una soglia sotto il quale NON andare...se è così il post non ha significato... :master: :master: :master:
    secondo quale criterio uno va bene e uno no?
    "i valori massimi per ogni progetto" come dici tu...quali sono? il tuo db è strutturato in una tabella per progetto?

  6. #6

    San disney aiutaci tu...

    Si ho tutte le tabelle del caso Seafarer (Tre in questo caso: Progetti, Partner, Finanziatori per progetto).
    Faccio un esempio pratico:

    Ho i progetti Pippo, Pluto e Paperino
    Ho 6 finanziatori:Qui,Quo,Qua,Emy,Elly.... che partecipano ad ogni progetto in maniera diversa (da 0 a x cent).

    La query deve stabilire di volta in volta su quali Progetti il finanziatore scelto è quello che ha investito più degli altri.

    Spero di essere stato chiaro....
    Grazie!
    Questo spettacolo vi è stato offerto dalla dissenso cognitivo S.P.A:

  7. #7
    è il tipico caso da join (mi pare)...purtroppo non ho mai capito come si usa quindi vediamo l'alternativa...
    c'è all'interno delle tabelle qualcosa che le collega tra loro?
    a quanto ho capito ogni finanziatore finanzia dei progetti...ci sarà scritto da qualche parte i soldi a quale progetto li ha destinati, no?

    a finale a te la query restituisce qlkosa del tipo

    per il progetto pippo ci sono stati x finanziatori, il maggiore è Qui
    per il progetto pluto ci sono stati k finanziatori, il maggiore è Emy

    oppure

    Il finanziatore Qui ha dato più soldi per i progetti (PIPPO,PLUTO)
    Il finanziatore Emy ha dato più soldi per i progetti (PAPERINO)
    ???

    in ogni caso devi sfruttare i collegamenti che hai posto nel db

    per come l'ho capito io basterebbe un top 1...ma forse non ho capito...

  8. #8

    Ce la ho fatta... !!!!!

    Ce la ho fatta: posto il codice casomai servisse a qualcuno, temo sia di una lentezza allucinante....
    Grazie dei consigli seafarer!!!!!
    <%
    Dim nomef

    nomef=""&request.form("nomef")&""
    %>
    <p class="Titolocontenuto">'<%=nomef%>' &egrave; partner nei seguenti progetti: </p>
    <Form name="reporter" method="post" action="report_finanziatori.asp" target="_blank"><table width="760" border="0" cellspacing="0" cellpadding="10">
    <tr>
    <td width="760"><table width="1132" border="0" cellspacing="0" cellpadding="0">
    <tr>
    <td colspan="4" bgcolor="#003366" class="Titoletto"><font color="#FFFFFF">Risultati
    della ricerca</font></td>
    </tr>
    <%

    Set conn=Server.CreateObject("ADODB.Connection")
    conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & server.MapPath("/mdb-database/minamb.mdb")
    Set rec=Server.CreateObject("ADODB.Recordset")
    sql="SELECT * FROM Finanziatore WHERE (Ruolo='Finanziatore')"


    sql=sql+" Order by Nome_progetto, Importo_E Desc"


    rec.Open sql,conn,3,1
    if rec.RecordCount>0 then
    %>
    <tr>
    <td >Nome progetto</td>
    <td >Importo &euro; </td>
    <td >Importo $ </td>
    <td >Ruolo</td>
    </tr>
    <%
    do while not rec.eof
    iniz=""&rec.fields("ID")&""
    Nome_partner=""&rec.fields("Nome_partner")&""
    Nome_progetto=""&rec.fields("Nome_progetto")&""
    Ruolo=""&rec.fields("Ruolo")&""
    Importo_E=""&rec.fields("Importo_E")&""
    Importo_D=""&rec.fields("Importo_D")&""

    if pre_prog=Nome_progetto then
    rec.movenext
    else

    if nomef<>"" And Nome_partner<>nomef then
    rec.movenext
    else


    check0=1

    if col=0 then
    response.write ("<tr bgcolor=""#ffffff"">")
    else
    response.write ("<tr bgcolor=""#99CCFF"">")
    end if
    alfa=alfa+1

    %>

    <td class="Testo"><div align="left"><input type="checkbox" name="checkbox<%=alfa%>" value="<%=Nome_partner%>">
    </div></td>
    <td class="Testo"><%=Nome_progetto%></td>
    <td class="Testo"><%=Importo_E%></td>
    <td class="Testo"><%=Importo_D%></td>
    <td class="Testo"><%=Ruolo%></td>
    %>

    </tr>
    <%
    if col=0 then
    col=1
    else
    col=0
    end if

    rec.movenext
    end if
    end if
    pre_prog=Nome_progetto
    loop

    rec.Close
    conn.Close
    else
    %>
    <tr bgcolor="#ffffff"><td colspan="8" class="Testo" align="center">Nessun recordset trovato</td></tr>
    <%
    end if
    set rec=nothing
    set conn=nothing
    if check0<>1 then%>
    <tr bgcolor="#ffffff"><td colspan="8" class="Testo" align="center">Nessun recordset trovato</td></tr>
    <%
    end if
    %>

    Rucker
    Questo spettacolo vi è stato offerto dalla dissenso cognitivo S.P.A:

  9. #9
    sinceramente continuo a non capire cosa volessi fare esattamente ma...non sforzarti a spiegarmelo, sono felice che tu ci sia riuscito...basta così.ciauz

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.