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

    [MYSQL] Come estrarre un minimo relativo?

    Buonasera a tutti. Posto la mia tabella:

    +---------+---------------------+----------+
    | message | date | info |
    +---------+---------------------+----------+
    | 69 | 2009-03-22 19:55:13 | 7 |
    | 69 | 2009-03-22 15:55:13 | 6 |
    | 69 | 2009-03-22 15:50:13 | 5 |
    | 69 | 2009-03-22 12:50:13 | 4 |
    | 69 | 2009-03-22 11:50:13 | 3 |
    | 69 | 2009-03-22 11:20:13 | 2 |
    | 69 | 2009-03-22 11:12:13 | 1 |
    | 69 | 2009-03-10 09:29:29 | undici |
    | 69 | 2009-03-10 19:29:29 | dodici |
    | 69 | 2009-03-10 09:09:09 | nove |
    | 69 | 2009-03-10 09:19:19 | dieci |
    | 69 | 2009-03-24 17:48:26 | otto |
    | 69 | 2009-03-24 17:48:22 | sette |
    | 69 | 2009-03-24 17:48:18 | sei |
    | 69 | 2009-03-11 16:16:16 | cin |
    | 69 | 2009-03-11 15:15:15 | qua |
    | 69 | 2009-03-11 14:14:14 | tre |
    | 69 | 2009-03-11 11:12:13 | due |
    | 69 | 2009-03-11 00:00:00 | uno |

    Tre campi, con data messaggio (int) e info (string).

    Ho bisogno di una query che faccia questo.

    Nel giorno più vicino all'odierno, nel nostro caso il 2009-03-22, e quando message = 69, prenda il valore di info creato per primo...

    So di non essermi spiegato bene.

    Oggi è 24 marzo. Allora il giorno più vicino in cui ci sono rige con valori di message = 69 è il 22 marzo. Nel 22 marzo, ci sono più righe con message = 69. Di tutte queste, io vorrei che mi fosse restituita la prima del giorno, cioè la riga

    | 69 | 2009-03-22 11:12:13 | 1 |
    Ho provato con questa query:

    select * from broadcast_message where message = 69 AND date(date) < curdate() group by date(date) desc limit 1;
    Ma il risultato è la riga
    | 69 | 2009-03-22 19:55:13 | 7 |
    cioè l'ultima del giorno!!! Io vorrei la prima...

    Come posso risolvere?

  2. #2
    Moderatore di Sicurezza informatica e virus L'avatar di Habanero
    Registrato dal
    Jun 2001
    Messaggi
    9,782
    GROUP BY? al limite ORDER BY ...
    Leggi il REGOLAMENTO!

    E' molto complicato, un mucchio di input e output, una quantità di informazioni, un mucchio di elementi da considerare, ho una quantità di elementi da tener presente...
    Drugo

  3. #3
    Utente di HTML.it L'avatar di chris
    Registrato dal
    Sep 1999
    Messaggi
    1,568
    ordina prima per data (intesa come giorno mese anno) decrescente (il giorno più vicino) e poi per ora (intesa come ora minuto) crescente (il primo messaggio del giorno) con una cosa di questo tipo:

    ORDER BY DATE_FORMAT(date, '%Y-%m-%d') DESC, DATE_FORMAT(date, '%H-%i') ASC LIMIT 1
    "Nei prossimi tre anni col mio governo vogliamo vincere anche il cancro, che colpisce ogni anno 250.000 italiani e riguarda quasi due milioni di nostri concittadini"

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 © 2024 vBulletin Solutions, Inc. All rights reserved.