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

    Problema su Query MySQL con GROUP BY

    Salve a tutti,

    Ho un problema su una query di questo tipo:

    codice:
    $queryStatistica_2 = "SELECT compagnie.nome_Compagnia as compagnia, MAX(ritardi.tempo_Ritardo) as n, MONTH(ritardi.data_Ritardo)as mese
    						FROM ritardi, voli, compagnie
    						WHERE voli.codice_Volo     = ritardi.codice_Volo
    						AND   voli.inizio_Servizio = ritardi.inizio_Servizio
    						AND   voli.fine_Servizio   = ritardi.fine_Servizio
    						AND   voli.ora_Inizio      = ritardi.ora_Inizio
    						AND   voli.frequenza       = ritardi.frequenza
    						AND   voli.nome_Compagnia  = compagnie.nome_Compagnia
    						GROUP BY  compagnie.nome_Compagnia
    						ORDER BY  n desc";
    Successivamente stampo i risultati della query in questo modo:

    codice:
    echo "<table bgcolor=\"silver\" align=\"center\">";
    	echo "<th bgcolor=\"white\"><h2>Compagnia</h2></th><th bgcolor=\"white\"><h2>Max Ritardo</h2></th><th bgcolor=\"white\"><h2>Mese </h2></th>";	
    	while($arrayStat_2 = mysql_fetch_array($rispQueryStat_2)){
    		echo"<tr bgcolor=\"white\">";
    			echo "<td align=\"center\">";
    				echo $arrayStat_2['compagnia'];
    			echo "</td>";
    			echo "<td>";	
    				echo $arrayStat_2['n'];	
    			echo "</td>";
    			echo "<td>";
    				echo meseAnno($arrayStat_2['mese']);
    			echo "</td>";	
    		echo"</tr>";	
    	  }
    	echo "</table>";
    Ottengo una tabella con tre colonne.
    Nella prima c'e' la compagnia aerea, nella seconda il ritardo maggiore, e nella terza il mese del ritardo maggiore.

    Le prime due colonne non danno problemi.La terza colonna invece mi va a pescare una data nella quale era stato fatto un ritardo ma non corrisponde al ritardo massimo segnato li in colonna!

    Dove sto sbagliando?
    Please Help me!

  2. #2
    io proverei così

    codice:
    $queryStatistica_2 = 
    "SELECT voli.nome_Compagnia as compagnia, 
       MAX(ritardi.tempo_Ritardo) as n, 
       MONTH(ritardi.data_Ritardo) as mese
    
    FROM voli
    
    JOIN ritardi
    	ON   voli.inizio_Servizio = ritardi.inizio_Servizio
    	AND   voli.fine_Servizio   = ritardi.fine_Servizio
    	AND   voli.ora_Inizio      = ritardi.ora_Inizio
    	AND   voli.frequenza       = ritardi.frequenza
    
    JOIN comapagnie
    	ON   voli.nome_Compagnia  = compagnie.nome_Compagnia
    
    GROUP BY voli.nome_Compagnia
    
    ORDER BY  n desc";
    ciao
    sergio

  3. #3
    Niente nemmeno cosi ottengo nella terza colonna il mese nel quale e' stato fatto il ritardo massimo!
    Grazie tantissimo ci speravo veramente nella tua soluzione perche' ci sto dietro da piu' di 5 ore a sta queraccia!
    Non ci sono altre soluzioni per fare questa benedettisma query con raggruppamento?

  4. #4
    prova ad aggiungere una clausula where voli.nome_compagnia="una_compagnia_aerea" e verifica se in questo caso la dà giusta
    ciao
    sergio

  5. #5
    Niente nemmeno mettendo il nome di una delle mie compagnie riesco ad ottenere la query esatta!
    Ma come mai utilizzando il group by raggruppa i campi ma seleziona altri campi che non hanno una relaziona tra loro?
    :master: :master: :master: :master:

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.