GROUP BY

joella Messages postés 114 Statut Membre -  
joella Messages postés 114 Statut Membre -
Bonjour,
J'ai un pbm sur la requete suivant:
<?php
require_once("connexion.php");
$sql="select * from operation GROUP BY nom_court_service";
$query=mysql_query($sql)or die(mysql_error());

while ($data=mysql_fetch_array($query))
{
$id=$data['id_projet'];
$num=$data['numero_operation'];
$lib=$data['intitule_operation'];
$num_finance=$data['numero_finance'];
$cart=$data['id_carte'];
$mo=$data['maitre_ouvrage'];
$serv=$data['nom_court_service'];
echo "
<table border='1' bordercolor='#000080' cellpadding='1' cellspacing='1' width='100%'>
Service: <input type='hidden' value='$serv'>$serv
<tr>
<td ><p><font face='Arial' size='3'><center>Numero</center> </font></p></td>
<td ><p><font face='Arial' size='3'><center>Intitulé</center> </font></p></td>
<td ><p><font face='Arial' size='3'><center>Financement</center> </font></p></td>
<td ><p><font face='Arial' size='3'><center>Carte</center> </font></p></td>
<td ><p><font face='Arial' size='3'><center>Maitre_Ouvrage</center> </font></p></td>
</tr>

<tr >
<td ><p><font face='Arial' size='2'>$num </font></p></td>
<td ><p><font face='Arial' size='2'>$lib </font></p></td>
<td ><p><font face='Arial' size='2'>$num_finance </font></p></td>
<td ><p><font face='Arial' size='2'>$cart </font></p></td>
<td ><p><font face='Arial' size='2'>$mo </font></p></td>
</tr>";
}
?>
</table>
Le pbm pose sur la requete sql contenant de group by. Il donne le résultat comme ceci:
Service: DTI
Numero Intitule Financement Carte Maitre_ouvrage
1 Protection de ville FER 1 MTPM

Le requete n'affiche pas tous les enregistrements concernant sur la service DTI mais il affiche le premier enregistrement seulement.
Qu'est-ce que je dois fais pour résoudre mon pbm, est-ce qu'il y a de quelqu'un a une idée correspondant sur le GROUP BY?
Merci d'avance . C'est urgent.
Bonne journée

6 réponses

Rctll Messages postés 510 Date d'inscription   Statut Membre Dernière intervention   1 529
 
quand je lis le code, j'ai impression que vous avez confondu group by et order by. Le group by permet de traiter plusieurs données comme une seule et de faire des calculs sur ce groupe de données. Order by lui classe les données dans l'ordre demandé.
Essayez donc : select * from operation order by nom_court_service ASC;
0
joella Messages postés 114 Statut Membre 12
 
Bonjour,
Merci pour vous me repondre mais je fais de trier l'enregistrement par service donc le nom de triage en haut et la liste qui correspond en bas dans un tableau.
Comment peut on le faire ça?
merci d'avance.
0
Rctll Messages postés 510 Date d'inscription   Statut Membre Dernière intervention   1 529
 
Je ne comprend pas tres bien votre dernier post..
Auriez vous un exemple de ce que vous voulez que mysql renvoie ?
0
joella Messages postés 114 Statut Membre 12
 
Bonjour,
Mysql renvoie comme ceci
Service: DER
Numero Intitule Financement Carte Maitre_ouvrage
1/der Construction de route FER 1 MTPM
2/der Réhabilitaion de la RN34 BM 2 MTPM

Service: ARM
Numero Intitule Financement Carte Maitre_ouvrage
1/arm Construction des routes RN4 FER 5 MTPM
2/arm Construction de pont BM 10 MTPM

Voir le resultat que je fais chercher le code pour l'afficher comme ci-dessus.
Merci d'avance
Bonne journée
0

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

Posez votre question
Rctll Messages postés 510 Date d'inscription   Statut Membre Dernière intervention   1 529
 
hmm , je vois ce que vous voulez faire, malheuresement, ce n'est pas directement possible, car mysql ne renvoie que des tableau à 1 dimension, or pour obtenir directement ce que vous voulez, il faudrait au moins 2 dimensions.
Ceci dit il y a moyen de faire ce que vous voulez avec 2 lignes de php en plus :
<?php
require_once("connexion.php");
$sql="select * from operation ORDER BY nom_court_service ASC";
$query=mysql_query($sql)or die(mysql_error());

$last_serv='';

while ($data=mysql_fetch_array($query))
{
$id=$data['id_projet'];
$num=$data['numero_operation'];
$lib=$data['intitule_operation'];
$num_finance=$data['numero_finance'];
$cart=$data['id_carte'];
$mo=$data['maitre_ouvrage'];
$serv=$data['nom_court_service'];
echo "
<table border='1' bordercolor='#000080' cellpadding='1' cellspacing='1' width='100%'>";
if ($serv !=$last_serv ){ $last_serv=$serv;
echo "
Service: <input type='hidden' value='$serv'>$serv
<tr>
<td ><p><font face='Arial' size='3'><center>Numero</center> </font></p></td>
<td ><p><font face='Arial' size='3'><center>Intitulé</center> </font></p></td>
<td ><p><font face='Arial' size='3'><center>Financement</center> </font></p></td>
<td ><p><font face='Arial' size='3'><center>Carte</center> </font></p></td>
<td ><p><font face='Arial' size='3'><center>Maitre_Ouvrage</center> </font></p></td>
</tr>";}
echo "
<tr >
<td ><p><font face='Arial' size='2'>$num </font></p></td>
<td ><p><font face='Arial' size='2'>$lib </font></p></td>
<td ><p><font face='Arial' size='2'>$num_finance </font></p></td>
<td ><p><font face='Arial' size='2'>$cart </font></p></td>
<td ><p><font face='Arial' size='2'>$mo </font></p></td>
</tr>";
}
?>
</table> 


0
joella Messages postés 114 Statut Membre 12
 
Bonjour,
merci pour vous de meaider sur mon pbm, il est resolu est ca marche bien. Mais une petite question pour plus d'information: est-ce que vous m'expliquer le rôle de $last_serv SVP!
merci bcp
Bonne journée
0