Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072

    Ultimo record per ogni cliente

    Ciao a tutti, ho una Tabella con elenco di valori che fanno riferimento ad una tabella generale di clienti Tabella_Clienti


    Nella Tabella principale ho

    Data
    CodiceCliente
    ....

    e più record inseriti per ogni CodiceCliente


    Io vorrei visualizzare per ogni CodiceCliente solo l'ultimo (data più recente)

    quindi avere un solo CodiceCliente e l'ultimo record inserito per ogni CodiceCliente


    Non capisco dove sbaglio nella mia query (non viene fatta una totalizzazione per CodiceCliente)


    codice:
    
    		$sql = "SELECT c1.id, c1.Data, c1.CodiceCliente ";
    		$sql = $sql . "FROM Tabella c1 INNER JOIN Tabella_Clienti c2 ON c1.CodiceCliente = c2.CodiceCliente ";
    		$sql = $sql . "WHERE ........
    
    		if ((isset($_POST['date']))&&($_POST['date'] != "")){
    			$t_date = split('-', $_POST['date']);
    			$t_date = $t_date[2].'-'.$t_date[1].'-'.$t_date[0];
    			$sql = $sql . " AND c1.Data LIKE '%" . $t_date . "%'";
    		}
    		
    		if ((isset($_POST['stato']))&&($_POST['stato'] != "")){
    			$sql = $sql . " AND c1.Stato LIKE '%" . $_POST['stato'] . "%'";
    		}
    		
    		if ((isset($_POST['last']))&&($_POST['last'] == 1)){
    			$sql = $sql . " AND c1.id IN ( SELECT MAX(id) FROM Tabella ) ";
    		}
    		
    		if (isset($this->_qtype)&&isset($this->_query)&&($this->_qtype!="")&&($this->_query!="")){
    			    $sql = $sql . " AND ". $this->_qtype ." LIKE '%" .  $this->_query . "%'";
    		}
    
    
    Funzionano tutti i filtri tranne il "last" per la visualizzazione solo degli ultimi records		
    
    Cosa sbaglio??
    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072
    Non capisco dove sbaglio

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072
    Nessun suggerimento ??????


  4. #4
    Originariamente inviato da Valeria75_bis
    Non capisco dove sbaglio
    la subquery ti prende solo il MAX id di TUTTA la tabella. Mentre tu vuoi il MAX id di OGNI utente.

    Vediamo se ci arrivi per conto tuo che e' piu' soddisfacente. pensa ad un raggruppamento.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072
    Io avevo pensato ad un group by ma non so come applicarlo per non stravolgere la mia struttura attuale di PHP (organizzata per if in base al filtro da applicare)

    Thanks

  6. #6
    Originariamente inviato da Valeria75_bis
    Io avevo pensato ad un group by ma non so come applicarlo per non stravolgere la mia struttura attuale di PHP (organizzata per if in base al filtro da applicare)

    Thanks
    codice:
    		if ((isset($_POST['last']))&&($_POST['last'] == 1)){
    			$sql = $sql . " AND c1.id IN ( SELECT MAX(id) FROM Tabella group by ciccio) ";
    
    // ciccio = quel che tu vuoi,

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072
    Perfetto!!!

    Quindi basta fare un group by direttamente nella condizione

    nel mio caso group by CodiceCliente

    e stop!

    Correto??

    Grazie mille

  8. #8
    Originariamente inviato da Valeria75_bis
    .....

    Correto??

    Grazie mille
    No. Errato. Corretto vorrebbe 2 t o almeno gli piacerebbe....

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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