Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 23
  1. #1

    stampare record con la data più recente

    Scusatemi per il titolo ma proprio non riuscivo a mettere niente di meglio
    In una tabella con 20 campi ho circa 6.000 record.
    Eseguendo una query per la visualizzazione degli stessi e un IF che mi filtra la ricerca
    mi succede che possono essere presenti due o più id uguali, questo perchè hanno tutti rientrano nelle condizioni imposte dall'if.
    Vorrei che me ne stampasse solo uno ad esempio quello che ha il campo data più recente.
    Cerco di fare un piccolo esempio per spiegarmi meglio:

    id 1 cane 15/04/2009
    id 2 gatto 19/12/2008
    id 2 gatto 05/08/2009
    id 2 gatto 07/08/2009
    id 3 topo 06/08/2009

    tutti e cinque i record rientrano nella condizioni dell'IF io vorrei però che mi
    stampasse solo
    id 1 cane 15/04/2009
    id 2 gatto 07/08/2009 quello con la data più recente
    id 3 topo 06/08/2009

    Grazie

  2. #2

  3. #3
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    senza sapere come è la tua query attuale sarebbe ben difficile...
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  4. #4
    Codice PHP:
    $adesso $_POST['anno'].$_POST['mese'].$_POST['giorno'];
    $res mysql_query("SELECT * ,
    DATE_FORMAT(data_decorrenza,'%d-%m-%Y') as data_dec,
    DATE_FORMAT(data_fine,'%d-%m-%Y') as data_fin,
    period_diff(date_format(
    $adesso,\"%Y%m\"),date_format(data_decorrenza,\"%Y%m\")) as mesi
    FROM prestiti
    LEFT JOIN dipendenti ON (cod_dipendente=codice) 
    order by cognome, nome asc"
    );
    while (
    $row=mysql_fetch_assoc($res))
    {
        
        
    $ultima_quota $row['data_fine'];
        list(
    $y$m$g) = explode('-',$data_giorno);
        
    $time_data_giorno mktime(000$m$g$y);
        list(
    $y$m$g) = explode('-',$ultima_quota);
        
    $time_ultima_quota mktime(000$m$g$y);
        
    $somma $row['imp_somma'];
        if ((
    $time_ultima_quota <= $time_data_giorno) || ($somma )) {
    //niente    
    }else{
    print……….. 
    adesso ci può essere il socio PIPPO che rientra più volte nella condizione IF e io vorrei che venisse stampato solo uno, cioè quello che ha l'ID più grande o la data più recente.

    Preciso che nella tabella ogni riga ha un ID univoco autoincrement.

  5. #5
    Utente di HTML.it L'avatar di diaz
    Registrato dal
    Apr 2000
    residenza
    Berlin
    Messaggi
    379
    ok...
    nel tuo esempio che hai fatto nell'introdurre il problema hai detto che i recordo possono avere lo stesso ID
    es.
    id 2 gatto 19/12/2008
    id 2 gatto 05/08/2009

    e adesso invece hai affermato che l'ID é univoco.
    La soluzione al tuo quesito dovrebbe stare li, cioé dovresti fare la query con un GROUP BY id
    E da quel giorno, se andavo da qualche parte, io ci andavo correndo!

    Tweeting @apphancer | Views my own – except when I say things I don’t really think.

  6. #6
    si è vero ho sbagliato ho scritto ID invece di codice
    l'ID non è univoco lo è il codice.

  7. #7
    Utente di HTML.it L'avatar di diaz
    Registrato dal
    Apr 2000
    residenza
    Berlin
    Messaggi
    379
    allora prova con qualcosa simile

    Codice PHP:
    GROUP BY campo_codice
    ORDER BY cognome
    nomecampo_data ASC 
    con group BY elimini sicuramente i duplicati

    Non sono sicuro per quanto riguarda l'ordine in cui ti restituisce i risultati. Se non ti da l'ordine che desideri dovresti provare a fare una query ricorsiva oppure non so se qualche altro forumista ha suggerimenti su come ottenere il risultato facendo un'unica query.
    E da quel giorno, se andavo da qualche parte, io ci andavo correndo!

    Tweeting @apphancer | Views my own – except when I say things I don’t really think.

  8. #8
    Codice PHP:
    FROM prestiti
    LEFT JOIN dipendenti ON 
    (cod_dipendente=codice
    GROUP BY cod_dipendente //che è quello che può essere > di 1
    order by cognomenomecod_prestito asc"); 
    mi dovrebbe stampare circa 100 record ma me ne stampa solo 6

  9. #9
    Utente di HTML.it L'avatar di diaz
    Registrato dal
    Apr 2000
    residenza
    Berlin
    Messaggi
    379
    quindi il campo cod_dipendente non é univoco?
    E da quel giorno, se andavo da qualche parte, io ci andavo correndo!

    Tweeting @apphancer | Views my own – except when I say things I don’t really think.

  10. #10
    quello che ho chiamato cod_prestito è univoco e autoincrement
    il cod_dipendente non è univoco

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.