|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Candidat au titre de Membre du Club
![]() Étudiant Inscription : décembre 2008 Messages : 42 ![]() |
Bonjour je viens vers vous car j'ai un problème
j'ai une requete qui m'affiche la liste des demandes traitées et la charge par site, sachant que j'ai plusieurs site je vous donne un exemple sur deux sites Affichage actuel Demande|libelle|Site|Charge Alf|Charge CSA| 123| Dev| ALF| 0,1| 0| 123| Dev| CSA| 0 | 0,2| j'aimerai avoir au final Demande|libelle|Charge Alf|Charge CSA| 123| Dev| 0,1 | 0,2| Mon problème se trouve au niveau de l'affichage j'aimerai faire pouvoir éliminer les doublons dans mon code php. En faisant un DISTINCT dans ma requete je vais prendre la deuxieme ligne. J'ai essayé des fonctions comme array_unique, et aussi array_sum mais la colonne reste vide je vous montre mon code en esperant que vous pourrez me mettre sur une piste Code :
|
||
|
|
00
|
|
|
#2 |
|
Membre du Club
![]() Jean-Christophe THOMASIngénieur développement logiciels Inscription : août 2010 Messages : 46 ![]() |
Bonjour,
Le mieux et le plus simple serait de le faire par une requête mySQL. Est-ce que tu y as accès ou es-tu obligé de travailler à partir du résultat de celle-ci? |
|
|
00
|
|
|
#3 | ||
|
Candidat au titre de Membre du Club
![]() Étudiant Inscription : décembre 2008 Messages : 42 ![]() |
Merci tse_jc pour ta réponse. En faite ma requête me donne déjà le résultat dont j'ai besoin, il faut juste changer l'affichage.
Je vous montre ma requête Code :
En rajoutant le DISTINCT je perds la seconde ligne. En retirant le GROUP BY j'obtiens une seule ligne du à la Somme(SUM) vu que je dois cummulé les charges. Un ORDBER BY m'affichera plus de doublons. Après il me reste une autre option créer une requete par site(une vue ou table temporaire) en rajoutant dans le WHERE ressource_tma.Equipe='ALF' idem pour les autres sites. Pour faire un select sur le nom de ma vue ou de ma table temporaire Mais cette méthode est trop lourd à gérer. J’espère que j'ai pu répondre ta question pourquoi je dois faire le tri en php. N'hesitez pas me proposer d'autre conseil, perso sa fait 3 jours que je suis dessus et je vois pas trop comment et pourrai simple |
||
|
|
00
|
|
|
#4 |
|
Membre du Club
![]() Jean-Christophe THOMASIngénieur développement logiciels Inscription : août 2010 Messages : 46 ![]() |
Bonjour,
J'aimerais éviter vu la nature des tables de te demander un show create table de ta structure, et le rôle de chaque table de ta requête ne m'apparaissant pas clairement, pourrais-tu m'expliquer un peu le rôle des tables que tu utilises plus précisément stp? |
|
|
00
|
|
|
#5 |
|
Candidat au titre de Membre du Club
![]() Étudiant Inscription : décembre 2008 Messages : 42 ![]() |
Je vais vous donner un peu plus d'explication
Ma requête me sort un certain nombre de demande traité sur une période bien précise et sur certain site. J'ai juste simplifié le petit schémas Explication Prenons le cas un projet informatique par exemple Pour une même demande l'analyse peut être faite à Paris et le développement à Lyon par exemple et les testes et validation à Paris cela nous donnera dans notre tableau Demande|libelle|Site|Charge Paris|Charge Lyon| 123 ANA Paris 0.5 0 123 DEV Lyon 0 2 123 Test Paris 0.1 0 Le but est de pouvoir faire la somme des différentes charges effectuées sur une demande se qui nous donne Demande|libelle|Site|Charge Paris|Charge Lyon| 123 ANA Paris 0.6 0 123 DEV Lyon 0 2 Objectif final est d'avoir la colonne si on peut l'enlevé sa pose pas de probleme Demande|libelle|Site|Charge Paris|Charge Lyon| 123 ANA xx 0.6 2 Quelque explication sur les tables maintenant. La table demande_ou_projet est ma table principe elle comporte le champs(IdDemandeClient) qui représentent ma demande, après la table forfait qui est utilisée pour différent type de forfait elle est indispensable quelle me permet d'etablir mon filtre sur la requête, demande_se_trouve_dans_etat utilisé pour voir les demandes qui on été terminé, je l'utilise aussi dans mes filtres puis la table ressource_tma que j'utilise pour retrouver le site sur lequel la demande à été traité, la table sous_systeme je l'utilise comme une table intermédiaire pour accéder à une table, comme t'as pu le voir elle n'est pas utilisé dans le SELECT. J'espère que cela réponds à ta question. Mon problème c'est la partie php je pense qu'il n'y a pas de problème dans le sql mais bon je me trompe peut être :-) Surtout n'hesite pas si tu veux plus de précision |
|
|
00
|
|
|
#6 |
|
Membre du Club
![]() Jean-Christophe THOMASIngénieur développement logiciels Inscription : août 2010 Messages : 46 ![]() |
Merci pour ces précisions. M'en reste une ^^ le rôle de la table sous-système au niveau conceptuel. C'était justement celle-ci qui avait besoin le plus d'explications
Ensuite au niveau rendu, tu souhaites avoir la charge totale tout site confondu, ou simplement par site? (besoin réel) |
|
|
00
|
|
|
#7 | ||
|
Candidat au titre de Membre du Club
![]() Étudiant Inscription : décembre 2008 Messages : 42 ![]() |
c'est simplement la somme par site.
Pour info j'arrive déjà à le faire la somme par site depuis SQL, grace à la SUM et j'arrive à les classer grace au GROUP BY demande, site. Le problème c'est qu'une fois qu'une demande à été traité sur un autre site j'ai deux lignes qui s'affiche. Moi j'aimerai avoir au final une seule ligne au lieu de deux pour la même demande. Aujourd'hui pour avoir l'affichage que j'ai j'utilise des if comme ici Code :
Demande|libelle|Site|Charge Paris|Charge Lyon| 123 ANA Paris 0.5 0 123 DEV Lyon 0 2 123 Test Paris 0.1 0 Donc lors de l'execusion de la requete j'ai toute mes données qui s'affiche à moi de faire un second filtre en php pour avoir au final ce resultat. Demande|libelle|Site|Charge Paris|Charge Lyon| 123 ANA Paris 0.6 0.2 Je crois qu'une boucle pourrai résoudre mon problème mais je vois pas trop comment |
||
|
|
00
|
|
|
#8 |
|
Membre du Club
![]() Jean-Christophe THOMASIngénieur développement logiciels Inscription : août 2010 Messages : 46 ![]() |
Re,
Merci pour tes explications, même si je n'ai toujours pas d'infos concernant ta table sous-système. Excuse-moi de persister du côté de la résolution de ta requête, car c'est de loin la meilleure approche sur tous les plans pour ton applicatif. Donc, permet moi de reformuler ta question, et dis-moi si je me trompe quelque part. Tu cherches à connaître, pour chaque demande initiée dans une période donnée, terminée, et appartenant à un forfait donné, la charge totale de réalisation par site. Si ma formulation est bonne, cela résume ton cahier des charges précisément pour établir ta requête dans de bonnes conditions. De plus, si ma formulation est exacte, j'ai peur que ta db souffre d'un problème de normalisation et que ta requête te donne des résultats erronés par rapport à ce que tu cherches à en faire car elle a été visiblement conçue pour optimiser d'autres résultats (que tu n'as pas besoin ici), où alors j'ai pas toutes les infos. Quoiqu'il en soit, si ma formulation est exacte, peux-tu me répondre aux questions suivantes: 1) à quelle table appartient le champ "charge_vendue"? 2) comment se définie la charge totale par site par rapport aux champs charge_vendue et charge_consomée_totale? ++ |
|
|
00
|
|
|
#9 | ||
|
Candidat au titre de Membre du Club
![]() Étudiant Inscription : décembre 2008 Messages : 42 ![]() |
Ta formulation est tout simplement correcte.
Je vais déjà te présenter la structure de la table sous_systeme Code :
application de type "DEV", cette table est en relation avec la table forfait_budget (REF_SOUS_SYSTEME). J’espère que cette fois c'est un peu plus claire. Pour répondre à ta seconde question concernant le champs charge_vendu elle appartient à la table (demande_ou_projet). Pour la deuxième question la charge totale par site La charge_consommée_totale c'est la somme de tout les charges effectué sur une demande sans prise en compte du site sur lequel il a été traité Quant à la charge vendu il y a deja un calcul qui est fait elle est obtenue en faisant la différence dans différence entre la charge_consommee_total et le reste_a_faire. La valeur est deja renseignée par un autre outil qui gère l'insertion des demandes. Pour ce qui s'agit de la base donnée elle a été conçu il y a de cela quelque année elle doit avoir 10 ans d’après ce qu'on ma fait savoir. Il y a sûrement des choses à corriger mais à ce niveau c'est pas vraiment à moi de le faire, je suis doit mettre un outil de reporting pour faire ressortir les données dont ils ont besoin En tout cas merci pour tes interventions et n’hésite pas à poser ou proposer des solutions. Je vais voir si je peux pas optimiser ma requêtes histoire d'avoir moins de table possible mais je pense pas que cela pourra résoudre mon problème d'affichage :-) |
||
|
|
00
|
|
|
#10 |
|
Candidat au titre de Membre du Club
![]() Étudiant Inscription : décembre 2008 Messages : 42 ![]() |
Bonjour j'ai finalement trouvé la solution
ce que je voulais faire n'était pas possible avec une seule requête. J'ai du le faire en 3 requêtes une première requête pour retrouver la demande en appliquant un DISTINCT pour éviter tout les doublons. La seconde à partir de la demander qui me permettra de retrouver toute les charges lié à cette demande et par site ou j'effectue ma somme Puis une troisième et dernière requête pour afficher la demande et la charge de chaque site et le tout sur une seule ligne .Merci à tse_jc qui a passé du temps à comprendre mon problème
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com