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

Discussione: mysql query

  1. #1

    mysql query

    Ciao a tutti,
    sto tentando senza riuscirci a trovare una query mysql che funzioni
    ho un record con de campi numerici R1, R2, R3, R4 ,R5, R6 ecc da questi campi devo estrarre i 3 valori maggiori. es

    user R1 R2 R3 R4 R5 R8
    --------------------------------------------------------------------------------------
    Pino 12 9 15 1 8 2


    dall User pino dovrei estrarre 12, 9, 15 che sono i 3 più alti.

    A dire il vero non so neanche se è possibile con una query ma lascio agli esperti il verdetto.
    Grazie
    Marco

  2. #2
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    secondo me sarebbe meglio inserirli in una stringa e ordinarli come array..

    ma dipende se quei record servono all'ordinamento..
    2000 post e sono più vecchio di 4 anni...
    grazie a tutti....

  3. #3
    si puo provare con

    codice:
    SELECT TOP 3 R0 FROM
    (   
       SELECT USER, R1 AS R0
       UNION
       SELECT USER, R2 AS R0
       UNION
       SELECT USER, R3 AS R0
       UNION
       SELECT USER, R3 AS R0
       UNION
       SELECT USER, R4 AS R0
       UNION
       SELECT USER, R5 AS R0
       UNION
       SELECT USER, R6 AS R0
       UNION
       SELECT USER, R7 AS R0
       UNION
       SELECT USER, R8 AS R0
    )
    WHERE USER='PINO'
    ORDER BY R0

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Mysql mette a disposizione un'utile funzione di nome greatest.
    Per trovare il valore più grande potresti fare

    codice:
    select greatest(r1,r2,r3,r4,r5,r6) as maggiore
    from tabella 
    where ...
    Purtroppo non credo sia possibile risalire al secondo e al terzo valore maggiore se non ricorrendo all'escamotage suggerito da optime.

    codice:
    select r1 as valori
    from tabella
    where ....
    union all
    select r2
    from tabella
    where ...
    union all
    select r3 
    from tabella
    where ....
    union all
    select r4 
    from tabella
    where ...
    union all
    select r5 
    from tabella
    where ...
    union all
    select r6 
    from tabella
    where ...
    order by valori desc limit 3
    Rispetto alla query di optime ho usato la clausola limit (l'equivalente di top di access e mssql e la parola all in corrispondenza di union perchè, se ad esempio i valori fossero 15,12,12,9,3,1, senza all otterresti come valori maggiori 15,12 e 9 anzichè 15,12,12.


  5. #5
    Ciao, come al solito siete fantastici.
    una cosa mi sfugge:
    select r1 as valori
    from tabella
    where ....

    valori a cosa si riferisce?
    grazie
    Marco

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da rosmarc
    Ciao, come al solito siete fantastici.
    una cosa mi sfugge:
    select r1 as valori
    from tabella
    where ....

    valori a cosa si riferisce?
    grazie
    Marco
    Valori è semplicemente un alias di campo. Puoi dargli il nome che vuoi.
    P.S. Ho testato la query su myql 5 e funziona. Se non vado errato in versioni antecedenti di mysql potrebbe essere necessario ricorrere alle parentesi:

    codice:
    (select r1 as valori
    from tabella
    where ...)
    union all
    (select r2
    from tabella
    where ...)
    .....

  7. #7
    perfetto, ma ho ancora una domanda...stupida, come estraggo i valori da valori

  8. #8
    come fai per gli altri...

    rs("valori")

  9. #9
    mmmm
    ok ma riesco ad estrarre un risultato solo mi sento molto stupido ma non ho mai usato query così "complesse".

  10. #10
    devi fare un ciclo do while not rs.eof, come se leggessi una lista di record. non andare in panico!

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.