[PHP] fonction count() et Group By

Résolu
comoriano -  
 comoriano -
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. kij_82 Messages postés 4102 Date d'inscription   Statut Contributeur Dernière intervention   857
     
    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.
    0
  2. comoriano
     
    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.
    0
  3. kij_82 Messages postés 4102 Date d'inscription   Statut Contributeur Dernière intervention   857
     
    Mum... si tu place un "DISTINCT" juste après le "SELECT" dans ta seconde requête, ça supprime les doublons ?
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. kij_82 Messages postés 4102 Date d'inscription   Statut Contributeur Dernière intervention   857
     
    Quels sont les doublons exactement, peux tu mettre la liste des résultats histoire d'avoir un visu.
    0
  6. comoriano
     
    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
    0
  7. comoriano
     
    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
    0
  8. kij_82 Messages postés 4102 Date d'inscription   Statut Contributeur Dernière intervention   857
     
    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.
    0
  9. comoriano
     
    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>
    0