[PHP] fonction count() et Group By

Résolu
Bonjour à tous,

Je cherche avec compter le nombre de territoire possédant chaques équipe :
Le porbleme est que ca ne m'affiche qu'une équipe sur les 10 existante :( :

$mafia1 = "SELECT *"
. "\n FROM #__wub_equipe"
;	
	
$database->setQuery( $mafia1 );

if ( $database->loadResult() ) 
{
	$mafia1 = $database->loadObjectList();
	}
				$n = 0;
      foreach($mafia1 as $list )
        {
    		echo $list->id; 
$mafia = "SELECT *, COUNT(*) as compte"
. "\n FROM #__wub_carte_victoire"
. "\n WHERE equipe = '".$list->id."' GROUP BY equipe"
;

}


if ( $database->loadResult() ) 
{
	$liste = $database->loadObjectList();
	} ?>
	<table class="tablesorter" border="0" cellpadding="0" cellspacing="1">
  <thead>
    <tr>
      <th></th>
      <th>Mafia</th>
      <th>Nbr territoire</th>
    </tr>
  </thead>
  <tbody>
    <?php
		$n = 0;
        foreach($liste as $list )
        {
    		$n++;
        ?>
          <tr>
            <td><?php echo $n; ?></td>
            
            <td nowrap="nowrap"><span class="blocequipe" style="background-color:<?php echo $equipe->CouleurEquipe($list->equipe); ?>;">&nbsp;</span> <?php echo $equipe->NomEquipe($list->equipe); ?></td>
            <td><?php echo number_format($list->compte); ?> pts</td>
          </tr>
        <?php
        }
		?>
  </tbody>
  
</table>


Merci pour l'aide que vous m'apporterez
Configuration: Windows XP
Firefox 3.0.13

9 réponses

  1. Contributeur
    Bonjour,

    Tu as mal placé une fermeture '}'

    Ici :
        		echo $list->id; 
    $mafia = "SELECT *, COUNT(*) as compte"
    . "\n FROM #__wub_carte_victoire"
    . "\n WHERE equipe = '".$list->id."' GROUP BY equipe"
    ;
    
    }
    
    


    Supprime cette fermeture et mets là à la fin.
    1. Merci pour ta réponse.
      Ca fonctionne mais il y a des doublons dans le tableau. Sais-tu comment faire pour ne pas en avoir ?

      Merci d'avance.
      1. Contributeur
        Mum... si tu place un "DISTINCT" juste après le "SELECT" dans ta seconde requête, ça supprime les doublons ?
        1. Contributeur
          Quels sont les doublons exactement, peux tu mettre la liste des résultats histoire d'avoir un visu.
          1. Oui je peux Voici le tableau :

             	Mafia  	Nbr territoire
            1 	  La famille montana 	0 pts
            2 	  Les affranchis 	0 pts
            3 	  Les affranchis 	0 pts
            4 	  Tueur de flic 	0 pts
            5 	  Tueur de flic 	0 pts
            6 	  La main noire 	0 pts
            7 	  Les affranchis 	0 pts
            8 	  Habitant 	0 pts
            9 	  Habitant 	0 pts
            10 	  Habitant 	0 pts
            11 	  Les affranchis 	0 pts
            12 	  Les affranchis 	0 pts
            13 	  Habitant 	0 pts
            14 	  Habitant 	0 pts
            15 	  Habitant 	0 pts
            1 	  Habitant 	39 pts
            1 	  Tueur de flic 	27 pts
            1 	  Tueur de flic 	27 pts
            1 	  Tueur de flic 	27 pts
            1 	  La famille montana 	62 pts
            1 	  Les affranchis 	39 pts
            1. Bonjour à tous,

              J'ai donc mis un HAVIS count(*) >= 1 aprés le ORDY by
              mais il me sort pas toutes les valeurs comme il faut

              Au lieu de me mettre :

              A
              B
              C
              D
              E

              Il va me mettre

              A
              A
              A
              C
              C
              E

              :-/ si vous voiyez ce que je veux dire :(

              merci de votre aide
              1. Contributeur
                Re,

                Pourrais tu me donner la structure exacte de ta table, ainsi qu'une liste de quelques enregistrement, de manière à créer la table en local chez moi pour tester des requetes SQL, ce sera plus pratique.
                1. C'est bon j'ai réglé mon pb en faisant autrement : J'ai enlevé la verification de l'id de l'equipe et la 1ére requête. Utiliser un DISTINCT et voilà

                  Encore merci pour ton aide :)

                  Je peux pas mettre en résolu, j'ai posté en tant que invité

                  <table class="tablesorter" border="0" cellpadding="0" cellspacing="1">
                    <thead>
                      <tr>
                        <th></th>
                        <th>Nom des equipes</th>
                        <th>Nombre de territoire</th>
                      </tr>
                    </thead>
                  <?php 
                  
                  $mafia = "SELECT DISTINCT (equipe) as team, equipe, COUNT(*) as compte "
                  . "\n FROM #__wub_carte_victoire"
                  . "\n GROUP BY team ORDER by compte DESC"
                  ;
                  $database->setQuery( $mafia );
                  
                  
                  if ( $database->loadResult() ) 
                  {
                  	$clan = $database->loadObjectList();
                  	} ?>
                  
                    <tbody>
                      <?php
                  		$n = 0;
                  
                          foreach($clan as $como )
                          {
                      		$n++;
                          ?>
                            <tr>
                              <td><?php echo $n; ?></td>
                              
                              <td nowrap="nowrap"><span class="blocequipe" style="background-color:<?php echo $equipe->CouleurEquipe($como->equipe); ?>;">&nbsp;</span> <?php echo $equipe->NomEquipe($como->equipe); ?></td>
                              <td><?php echo number_format($como->compte); ?> pts</td>
                            </tr>
                          <?php
                          } 
                  		?>
                    </tbody>
                    
                  </table>