Visualizzazione dei risultati da 1 a 8 su 8

Discussione: [MYSQL] Max e Min

  1. #1

    [MYSQL] Max e Min

    Mi servirebbe fare una query di questo tipo

    SELECT a,b FROM tab WHERE id = mt_rand(Max(id),Min(id))

    ma mi da errore.


    Leggendo il manuela ho visto che MYSQL 4.1 permette di fare questo

    SELECT a,b FROM tab WHERE id = (SELECT Max(id) FROM tabella)

    Avete suggerimenti.
    IO e TE 5 metri sopra il cielo.....perchè a 3 metri c'è già troppa gente.

    IO HO VISTO LA LUCE....

    Sono lo scippatore di emozioni

  2. #2

    Re: [MYSQL] Max e Min

    Originariamente inviato da marte101
    Leggendo il manuela
    lapsus freudiano?
    mmm... quell'esempio è del manuale? non so se sono permesse query annidate...

    cmq leggi nel manuale la funzione max, ci saranno sicuramente degli esempi utili.

  3. #3
    Proprio sul capitolo Max e Min il manuale (maledetti ormoni...) mostra la query con subquery possibile solo con MYSQL 4.1.

    In alternativa suggerisce di fare 2 query una in cui si ricavano i valori Max e Min e poi la query in cui vengono utilizzati i valori così estratti.
    IO e TE 5 metri sopra il cielo.....perchè a 3 metri c'è già troppa gente.

    IO HO VISTO LA LUCE....

    Sono lo scippatore di emozioni

  4. #4
    Utente di HTML.it L'avatar di Teuzzo
    Registrato dal
    Mar 2002
    Messaggi
    969
    Da quello che ho capito ti serve estrarre un record in maniera random.
    Esiste la funzione RAND() di mysql, ma non funziona molto bene.
    La tua procedura potrebbe avere dei buchi, nel senso che se tra l'id max e il min hai cancellato qualche record, potrebbe cercarti proprio quello.

  5. #5
    mt_rand è meglio di rand
    http://it.php.net/manual/it/function.mt-rand.php

    Avevo previsto l'eventualità dei buchi, infatti se il risultato è vuoto ripete l'operazione. Il problema è la query SELECT
    IO e TE 5 metri sopra il cielo.....perchè a 3 metri c'è già troppa gente.

    IO HO VISTO LA LUCE....

    Sono lo scippatore di emozioni

  6. #6
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    mt_rand è una funzione di php, non puoi farla eseguire come se fosse una funzione di mySQL.
    devi eseguire una query per prendere min(id) e max(id), e successivamente puoi fare la seconda query:
    codice:
    $query="SELECT a,b FROM tab WHERE id = ".mt_rand($max,$min)."";
    think simple think ringo

  7. #7
    Utente di HTML.it L'avatar di Teuzzo
    Registrato dal
    Mar 2002
    Messaggi
    969
    Originariamente inviato da marte101
    mt_rand è meglio di rand
    Sicuramente, ma io intendevo la funzione rand() di mysql, non quella di php.
    La query SELECT a,b FROM tab ORDER BY RAND() LIMIT 1 sarebbe molto semplice da fare, purtoppo non funziona molto bene.
    La procedura che uso io è la seguente: metto tutti gli id in un array, lo randomizzo con la funzione shuffle, scelgo il primo id dell'array randomizzato e lo passo alla query.

  8. #8
    Grazie ad entrambi.
    IO e TE 5 metri sopra il cielo.....perchè a 3 metri c'è già troppa gente.

    IO HO VISTO LA LUCE....

    Sono lo scippatore di emozioni

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.