[PHP] fonction count() et Group By

Résolu/Fermé
comoriano - 12 août 2009 à 14:27
 comoriano - 13 août 2009 à 15:19
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

9 réponses

kij_82
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
856
12 août 2009 à 15:21
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
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
kij_82
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
856
12 août 2009 à 16:27
Mum... si tu place un "DISTINCT" juste après le "SELECT" dans ta seconde requête, ça supprime les doublons ?
0
Non, ca ne fonctionne pas :-/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kij_82
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
856
12 août 2009 à 17:26
Quels sont les doublons exactement, peux tu mettre la liste des résultats histoire d'avoir un visu.
0
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
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
kij_82
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
856
13 août 2009 à 14:05
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
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