Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606

    Selezionare le ultime news in base ad una data

    Ciao
    Devo estrarre da un database gli ultimi record inseriti in base ad una determinata data.
    La struttura del record è fatta da vari campi ( ) tra cui un campo data che porta la data di inserimento.
    Siccome non viene tenuto conto dell'ora di inserimento ma solo del giorno, ci possono essere nello stesso giorno più record con la stessa data e io devo selezionarli tutti.
    Ora come ora ho fatta questa query al DB
    codice:
    SELECT i.id_immagini, i.pagina_id, i.titolo, i.nome_immagine, i.didascalia, i.data, i.proprietario, i.visibile 
    FROM immagini as i WHERE i.pagina_id = '2'
    AND dataOdierna >= (SELECT im.data FROM immagini AS im WHERE im.pagina_id = '2' ORDER BY im.data DESC LIMIT 1)
    dove la dataOdierna, come dice il nome, contiene la data odierna formattata nel formato accettato dal database ( MySQL ).
    La query così com'è funziona, se non fosse per il fatto che mi estrae non le ultime "news" ma tutto il database.
    Non riesco a uscirne, mi sapreste aiutare?
    Grazie

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Perche fai una subselect ?

    un AND dataodierna >= i.data dovrebbe bastare. Da dove proviene dataodierna ?
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Perche fai una subselect ?

    un AND dataodierna >= i.data dovrebbe bastare. Da dove proviene dataodierna ?
    No me so sbagliato scusa comunque non basta. Fa esattamente quel che fa, cioè estrae sempre lo stesso tutto il database
    dataOdierna è la data odierna, così come emessa al server ( uso sempre variabili autoesplicative se no mi scordo pure io che significano )
    Ultima modifica di Marcolino's; 12-10-2014 a 11:22

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Ma la dataodierna è sempre maggiore o uguale a tutte le date di una tabella almeno che tu abbia inserito date dal futuro.

    se metti un order by im.data desc limit 0,5 dovrebbe funzionare.

    Toglimi una curiosità. Scrivi davvero dataodierna nella query ? Mai sentito.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  5. #5
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    dataOdierna è un segnaposto PDO simile al ? del mysql improved extension.
    limit 0,5 non funziona, perché se ho 6 record non viene visualizzato il sesto ma solo i primi 5.
    A me servono tutte non un numero arbitrario.

  6. #6
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Ma sai quello che vuoi ?
    Ti lamenti che la query estragga tutte le news mentre come ho scritto prima la data odierna è sempre >= alla data di creazione delle news quindi tutti i record vengono sempre selezionati se non imponi un limite.
    Nel primo post vuoi soltanto le ultime news e nell'ultimo dici que le vuoi tutte !
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  7. #7
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    Credevo di essere stato chiaro. Devo estrarre dal database gli ultimi dati inseriti.
    La query che ho fatto io estrae tutto il database, quella che fai tu i primi 5 record.
    Ti faccio un esempio: la tabella é conposta da sette record, due inseriti il 5 agosto, tre il 15 settembre e due il 10 ottobre.
    La query deve selezionare solo gli ultimi ma io non so quanti sono, nell'esempio sono due, ma potrebbero essere di piú o di meno. Quindi nessun LIMIT.
    Capito?

  8. #8
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Mi dispiace dirtelo ma la nozione di ultimo non quantificato non esiste in informatica. Puoi chiedere ad un db le ultime 10 news, le news degli ultimi 3 giorni, le ultime 10 news degli ultimi 3 giorni. Ma le ultime news non ha alcun senso. Se tu non sai quanti siano gli ultimi figurati un db.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  9. #9
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    Ecco la query:
    codice:
    SELECT * FROM record WHERE data = (SELECT MAX(data) FROM record)
    che estrae gli ultimi n record di un database in base ad una data. Senza LIMIT ;-)

  10. #10
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    ma non è meglio se fai così?
    codice:
    SELECT * FROM record WHERE MAX(data) = data
    

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.