La valeur du count ds 1 group by : somme
razily
Messages postés
285
Statut
Membre
-
Yoan Messages postés 11905 Statut Modérateur -
Yoan Messages postés 11905 Statut Modérateur -
Bonjour,
je ne sais pas si je dois résumer le sujet comme suit face à mon problème ; on me demande selon une base access qui gère les clients selon le contrat(police) qu'ils ont fait auprès des sociétés d'assurance selon l'état de ce contrat (en cours ou résilié ..)
j'arrive à créer un formulaire adéquate et un fichier qui traite la partie requête et afficher correctement les résultats ; après c'est là que vient le problème mais voilà dans le cahier des charges : on me demande à partir du résultat de faire un bilan selon la compagnie c'est à dire connaître par exemple (si on choisit résilié) le nombre de contrat résilié chez AGF , pareil pour AXA
voici le fichier avec la requête en question j'ai juste mis le bout du code :
ce qui m'intéresse c'est la partie requête et la manière de pouvoir représenter et faire un état de bilan selon la compagnie
je pensais mettre count pour compter les compagnies mais y a des 1 partout à chaque ligne pour une même compagnie
merci d'avance pour vos suggestions
je ne sais pas si je dois résumer le sujet comme suit face à mon problème ; on me demande selon une base access qui gère les clients selon le contrat(police) qu'ils ont fait auprès des sociétés d'assurance selon l'état de ce contrat (en cours ou résilié ..)
j'arrive à créer un formulaire adéquate et un fichier qui traite la partie requête et afficher correctement les résultats ; après c'est là que vient le problème mais voilà dans le cahier des charges : on me demande à partir du résultat de faire un bilan selon la compagnie c'est à dire connaître par exemple (si on choisit résilié) le nombre de contrat résilié chez AGF , pareil pour AXA
voici le fichier avec la requête en question j'ai juste mis le bout du code :
/*
* le resultat après avoir fourni les donnéess dans le fichier rechercheAvancDate.php
* on recupere les parametres
*/
$etat = ($_GET['etat']);
$jour = $_GET['jour1'];
$mois = $_GET['mois1'];
$annee = $_GET['annee1'];
$jour2 = $_GET['jour2'];
$mois2 = $_GET['mois2'];
$annee2 = $_GET['annee2'];
//connection au serveur:
$cnx = odbc_connect( "DSN_carann", "root", "" ) or die("Impossible de se connecter à la bas de donnée") ;
// $sql = "SELECT * FROM Police where Dateeffet = #$recherhe# ";
// requête pour les police actifs basé sur la date effet
$sql = "SELECT NumPol, IDCabinet ,Codeclient,Denomination,Dateeffet,Typedepolice,CodeCompagnie , Codeetatpolice FROM PoliceClientphp where Dateeffet between #$recherhe# and #$limite#
AND Codeetatpolice = $etat GROUP BY CodeCompagnie,Codeetatpolice,Typedepolice,IDCabinet,Codeclient,Denomination,Dateeffet,NumPol";
echo "<table border=\"1\">";
echo "<thead>";
echo " <tr>";
echo " <th>Numéro</th>";
echo "<th>Dénomination</th>";
echo "<th>date effet</th>";
echo "<th>Type police</th>";
echo "<th>Compagnie</th>";
echo "<th>Etat police</th>";
echo "<th>Détails </th>";
echo " </tr>";
echo "</thead>";
echo "<tbody>";
$requete = odbc_do($cnx, $sql) ;
// affichage des données
while($result=odbc_fetch_object($requete))
{
echo "<tr>";
echo "<td>";
echo $result->IDCabinet;
echo " </td>";
echo " <td>";
echo $result->Denomination ;
echo "</td>";
echo " <td>";
$dateeffet=(string)($result->Dateeffet);
datefr($dateeffet);
echo " </td>";
echo "<td>";
if(isset ($result->Typedepolice)){
foreach ($policetype as $val=>$donnee){
switch ($result->Typedepolice){
case $val :
echo $donnee;
break ;
}
//echo 'Type de police'.$result->Typedepolice."<br/>";
}
}
echo "</td>";
echo "<td>";
if(isset ($result->CodeCompagnie)){
foreach ($compgagnie as $val1 =>$donnee1){
switch ($result->CodeCompagnie){
case $val1:
echo $donnee1;
break ;
}
}
}
echo "</td>";
ce qui m'intéresse c'est la partie requête et la manière de pouvoir représenter et faire un état de bilan selon la compagnie
je pensais mettre count pour compter les compagnies mais y a des 1 partout à chaque ligne pour une même compagnie
$sql = "SELECT NumPol, IDCabinet ,Codeclient,Denomination,Dateeffet,Typedepolice,CodeCompagnie , Codeetatpolice,count(CodeCompagnie) as bilan FROM PoliceClientphp where Dateeffet between #$recherhe# and #$limite#
AND Codeetatpolice = $etat GROUP BY CodeCompagnie,Codeetatpolice,Typedepolice,IDCabinet,Codeclient,Denomination,Dateeffet,NumPol";
.
.
.
.
// et dans le tableau d'affichage j'ai mis çà
<td >
echo $result->bilan ;
</td>
merci d'avance pour vos suggestions
A voir également:
- La valeur du count ds 1 group by : somme
- Message bounced by administrator - Forum Mail
- Gd group - Forum Vos droits sur internet
- Ds clock - Télécharger - Bureautique
- By click downloader avis - Forum Enregistrement / Traitement audio
- Shoes by iara - Forum Consommation & Internet
4 réponses
Là tu as sélectionné des attributs (NumPol, IDCabinet ,Codeclient, ...) en plus du count(). Je ne sais pas ce que donne le résultat d'une telle requête. Faudrait voir la doc du SGBD.
En tout cas, tu peux faire une seconde requête où tu ne sélectionne QUE le count() ou d'autres valeurs calculées :
Ceci calcule le nombre de compagnies différentes (d'où le DISTINCT) dans la table PoliceClientphp. Tu peux éventuellement rajouter une condition avec un WHERE si tu ne veux compter que celles qui vérifies cette condition.
En tout cas, tu peux faire une seconde requête où tu ne sélectionne QUE le count() ou d'autres valeurs calculées :
SELECT Count(DISTINCT CodeCompanie) FROM PoliceClientphp
Ceci calcule le nombre de compagnies différentes (d'où le DISTINCT) dans la table PoliceClientphp. Tu peux éventuellement rajouter une condition avec un WHERE si tu ne veux compter que celles qui vérifies cette condition.
razily
Messages postés
285
Statut
Membre
2
peut être c'est possible aussi de faire cette méthode pour chaque nom de compagnie
Salut ;
en fait le problème ici c'est de savoir combien de contrat résilié chez une compagnie particulière ; à vrai le nombre d'occurrence du nom de la compagnie lors du résultat de la requête
en fait le problème ici c'est de savoir combien de contrat résilié chez une compagnie particulière ; à vrai le nombre d'occurrence du nom de la compagnie lors du résultat de la requête
en fait je cherche une solution , et face à ce code j'aimerai vous demander s'il est possible de mettre une variable dans un tableau associatif car l'idée c'est de comparer le nom de compagnie , et si c'est égal on incrémente la valeur associée :
mais çà m'affiche tout le temps 0
pareil même si on fait
<?php
$compagnie = array ("AGF"=>0,"Allianz"=>0);
$cnx = odbc_connect( "DSN_personnes", "root", "" ) or die("Impossible de se connecter à la bas de donnée") ;
$sql = "SELECT * FROM [perso nnes] where nom like 'kim' ";
$requete = odbc_do($cnx, $sql) ;
//affichage des données:
while( $result = odbc_fetch_object( $requete ) )
{
// if(empty($result))
{
echo $result->nom." ".$result->prenom." <br>";
foreach($compagnie as $val =>$donnee)
{
// ici on pourra mettre que si
// si AGF alors on incrémente $stop
$donnee++;
}
}
// else
{
// echo 'aucun kim dans la base '."<br />";
}
}
foreach($compagnie as $val =>$donnee)
{
echo $val.'corespond '.$donnee;
}
mais çà m'affiche tout le temps 0
pareil même si on fait
$compagnie = array ("AGF"=>$top=0,"Allianz"=>$stop1=0);
Salut ;
mais $val correspond ici au nom de la compagnie agf .. axa etc ..
comment peut-on l'incrémenter ??
mais $val correspond ici au nom de la compagnie agf .. axa etc ..
comment peut-on l'incrémenter ??
Ca s'incrémente pas, c'est une chaîne ! Mais je comprends rien à ton code.
Déjà tu t'es trompé de condition (empty($result) au lieu de !empty($result))
Ensuite si tu veux incrémenter la valeur du tableau c'est pas $donnees++; mais $compagnie[$val]++; parce que $donnees est seulement une copie de la véritable valeur $compagnie[$val] du tableau . Donc si tu fais juste $donnees++; tu modifies la copie mais tu ne mets pas à jour le tableau.
Mais bien entendu si tu fais uniquement ça, toutes les valeurs tu tableaux seront incrémentées. Il faut que tu ajoutes ta fameuse condition "ici on pourra mettre que si AGF alors on ..."
Déjà tu t'es trompé de condition (empty($result) au lieu de !empty($result))
Ensuite si tu veux incrémenter la valeur du tableau c'est pas $donnees++; mais $compagnie[$val]++; parce que $donnees est seulement une copie de la véritable valeur $compagnie[$val] du tableau . Donc si tu fais juste $donnees++; tu modifies la copie mais tu ne mets pas à jour le tableau.
Mais bien entendu si tu fais uniquement ça, toutes les valeurs tu tableaux seront incrémentées. Il faut que tu ajoutes ta fameuse condition "ici on pourra mettre que si AGF alors on ..."