Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1506 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Probleme de requete MySQL avec des controles CASE

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Probleme de requete MySQL avec des controles CASE

n°1396290
brasseld
Posté le 28-06-2006 à 09:40:03  profilanswer
 

Bonjour à tous,
J'ai un p'tit probléme avec une de mes requêtes sur une BDD MySQL. J'ai voulu insérer une structure de contrôle CASE mais je ne comprend pas trop pourquoi cela ne fonctionne pas. Merci d'avance de votre aide..
 

Code :
  1. SELECT TPS_TOT=
  2.   CASE
  3.     WHEN qc.QUALIF='A' THEN SUM((sa.POURCENT*0.01)*(ao.POURCENT/100)*q.COUT_A)
  4.     WHEN qc.QUALIF='B' THEN SUM((sa.POURCENT*0.01)*(ao.POURCENT/100)*q.COUT_B)
  5.     WHEN qc.QUALIF='C' THEN SUM((sa.POURCENT*0.01)*(ao.POURCENT/100)*q.COUT_c)
  6.     WHEN qc.QUALIF='D' THEN SUM((sa.POURCENT*0.01)*(ao.POURCENT/100)*q.COUT_D)
  7.     WHEN qc.QUALIF='E' THEN SUM((sa.POURCENT*0.01)*(ao.POURCENT/100)*q.COUT_E)
  8.     WHEN qc.QUALIF='F' THEN SUM((sa.POURCENT*0.01)*(ao.POURCENT/100)*q.COUT_F)
  9.     WHEN qc.QUALIF='G' THEN SUM((sa.POURCENT*0.01)*(ao.POURCENT/100)*q.COUT_G)
  10.     WHEN qc.QUALIF='H' THEN SUM((sa.POURCENT*0.01)*(ao.POURCENT/100)*q.COUT_H)
  11.     WHEN qc.QUALIF='CS' THEN SUM((sa.POURCENT*0.01)*(ao.POURCENT/100)*q.COUT_CS)
  12.   END
  13. FROM budget.SUIVI_ACTIVITE sa
  14.   JOIN budget.APPLI_OBJS ao ON sa.ID_APPLIPROJET = ao.ID_APPLI
  15.   JOIN budget.CRHA c ON sa.ID_CRHA = c.ID_CRHA
  16.     JOIN budget.QUALIF_CHEMINOT qc ON c.ID_RESSOURCE = qc.CP_CHEMINOT AND sa.DATE_SUIVI BETWEEN qc.DATE_DEBUT_QUALIF AND qc.DATE_FIN_QUALIF
  17.   JOIN budget.QUALIFICATION q ON YEAR(sa.DATE_SUIVI) = q.ANNEE
  18. WHERE
  19.   YEAR(sa.DATE_SUIVI) = '2006'
  20.   AND ao.ID_OBJS = '2'
  21.   AND c.ID_RESSOURCE IN (SELECT CP_CHEMINOT FROM budget.CHEMINOT)
  22.   AND c.BVALIDE = true
  23. GROUP BY c.ID_RESSOURCE;

mood
Publicité
Posté le 28-06-2006 à 09:40:03  profilanswer
 

n°1396303
boulax
Inserer phrase hype en anglais
Posté le 28-06-2006 à 10:07:23  profilanswer
 

Et faut deviner ce qui fonctionne pas ?


---------------
Posté depuis des chiottes, sales. Me gusta.
n°1396305
Sebou77
French Tech powaa :-)
Posté le 28-06-2006 à 10:09:26  profilanswer
 

Avec les accolades en plus et le égale en moins ça donnes quoi ?

Code :
  1. SELECT TPS_TOT,
  2. {  CASE
  3.     WHEN qc.QUALIF='A' THEN SUM((sa.POURCENT*0.01)*(ao.POURCENT/100)*q.COUT_A)
  4.     WHEN qc.QUALIF='B' THEN SUM((sa.POURCENT*0.01)*(ao.POURCENT/100)*q.COUT_B)
  5.     WHEN qc.QUALIF='C' THEN SUM((sa.POURCENT*0.01)*(ao.POURCENT/100)*q.COUT_c)
  6.     WHEN qc.QUALIF='D' THEN SUM((sa.POURCENT*0.01)*(ao.POURCENT/100)*q.COUT_D)
  7.     WHEN qc.QUALIF='E' THEN SUM((sa.POURCENT*0.01)*(ao.POURCENT/100)*q.COUT_E)
  8.     WHEN qc.QUALIF='F' THEN SUM((sa.POURCENT*0.01)*(ao.POURCENT/100)*q.COUT_F)
  9.     WHEN qc.QUALIF='G' THEN SUM((sa.POURCENT*0.01)*(ao.POURCENT/100)*q.COUT_G)
  10.     WHEN qc.QUALIF='H' THEN SUM((sa.POURCENT*0.01)*(ao.POURCENT/100)*q.COUT_H)
  11.     WHEN qc.QUALIF='CS' THEN SUM((sa.POURCENT*0.01)*(ao.POURCENT/100)*q.COUT_CS)
  12.   END }
  13. FROM budget.SUIVI_ACTIVITE sa
  14.   JOIN budget.APPLI_OBJS ao ON sa.ID_APPLIPROJET = ao.ID_APPLI
  15.   JOIN budget.CRHA c ON sa.ID_CRHA = c.ID_CRHA
  16.     JOIN budget.QUALIF_CHEMINOT qc ON c.ID_RESSOURCE = qc.CP_CHEMINOT AND sa.DATE_SUIVI BETWEEN qc.DATE_DEBUT_QUALIF AND qc.DATE_FIN_QUALIF
  17.   JOIN budget.QUALIFICATION q ON YEAR(sa.DATE_SUIVI) = q.ANNEE
  18. WHERE
  19.   YEAR(sa.DATE_SUIVI) = '2006'
  20.   AND ao.ID_OBJS = '2'
  21.   AND c.ID_RESSOURCE IN (SELECT CP_CHEMINOT FROM budget.CHEMINOT)
  22.   AND c.BVALIDE = true
  23. GROUP BY c.ID_RESSOURCE;


n°1396306
Sebou77
French Tech powaa :-)
Posté le 28-06-2006 à 10:11:10  profilanswer
 

Au fait donnes un peu l'érreur que tu obtiens, et sinon quand tu fais ta somme dans tes case bah tu l'attribut à rien :heink: , il te manques donc un "as variable" après ton end je pense

n°1396307
betsamee
Asterisk Zeperyl
Posté le 28-06-2006 à 10:13:11  profilanswer
 

et avec CASE 1 au lieu de CASE tout court?


Message édité par betsamee le 28-06-2006 à 10:16:29
n°1396312
boulax
Inserer phrase hype en anglais
Posté le 28-06-2006 à 10:17:43  profilanswer
 

Sebou77 a écrit :

Au fait donnes un peu l'érreur que tu obtiens, et sinon quand tu fais ta somme dans tes case bah tu l'attribut à rien :heink: , il te manques donc un "as variable" après ton end je pense


gné ? non
 
cf la doc de toute façon, que notre ami ferait bien de consulter avant d'appeler au secours: http://dev.mysql.com/doc/refman/4. [...] tions.html


---------------
Posté depuis des chiottes, sales. Me gusta.
n°1396354
anapajari
s/travail/glanding on hfr/gs;
Posté le 28-06-2006 à 10:50:52  profilanswer
 

boulax a écrit :

gné ? non
 
cf la doc de toute façon, que notre ami ferait bien de consulter avant d'appeler au secours: http://dev.mysql.com/doc/refman/4. [...] tions.html


\o/
 
Par ailleurs, j'aime bcp le coté : "Moi pour les % une fois je fais fois 0.01 et une fois je divise par 100 ..."

n°1396385
brasseld
Posté le 28-06-2006 à 11:16:51  profilanswer
 

anapajari a écrit :

\o/
 
Par ailleurs, j'aime bcp le coté : "Moi pour les % une fois je fais fois 0.01 et une fois je divise par 100 ..."


De plus , j'aime beaucoup ton côté : "Foutage de gueule alors que l'on se trouve sur un forum afin d'aider les personnes qui ont quelques problémes...". Bref ton post est inutile...
 
Je suis désolé, j'ai zappé l'erreur que j'avais eu mais finalement j'ai résolu le probléme pra moi-même. Mais merci quand même...

n°1396387
boulax
Inserer phrase hype en anglais
Posté le 28-06-2006 à 11:18:34  profilanswer
 

brasseld a écrit :

Je suis désolé, j'ai zappé l'erreur que j'avais eu mais finalement j'ai résolu le probléme pra moi-même. Mais merci quand même...


Ton post, voir ton Thread devient tout aussi inutile si tu ne nous dis pas quel etait le probleme et comment tu l'as résolu.


---------------
Posté depuis des chiottes, sales. Me gusta.
n°1396388
betsamee
Asterisk Zeperyl
Posté le 28-06-2006 à 11:18:53  profilanswer
 

brasseld a écrit :

De plus , j'aime beaucoup ton côté : "Foutage de gueule alors que l'on se trouve sur un forum afin d'aider les personnes qui ont quelques problémes...". Bref ton post est inutile...
 
Je suis désolé, j'ai zappé l'erreur que j'avais eu mais finalement j'ai résolu le probléme pra moi-même. Mais merci quand même...


c'etait pas le CASE 1 ??

mood
Publicité
Posté le 28-06-2006 à 11:18:53  profilanswer
 

n°1396390
brasseld
Posté le 28-06-2006 à 11:20:43  profilanswer
 

La solution que j'ai trouvé. C'est peut-être pas la meilleure mais elle a le mérite de fonctionner correctement !!!

Code :
  1. SELECT
  2.   ao.ID_OBJS,
  3.   ao.ID_APPLI,
  4.   pa.ID_ACTIVITE,
  5.   c.ID_RESSOURCE,
  6.   SUM((sa.POURCENT*0.01)*(ao.POURCENT/100)) as TP_TOT,
  7.   SUM((sa.POURCENT*0.01)*(ao.POURCENT/100)*
  8.     CASE qc.QUALIF
  9.       WHEN 'A' THEN q.COUT_A
  10.       WHEN 'B' THEN q.COUT_B
  11.       WHEN 'C' THEN q.COUT_C
  12.       WHEN 'D' THEN q.COUT_D
  13.       WHEN 'E' THEN q.COUT_E
  14.       WHEN 'F' THEN q.COUT_F
  15.       WHEN 'G' THEN q.COUT_G
  16.       WHEN 'H' THEN q.COUT_H
  17.       WHEN 'CS' THEN q.COUT_CS
  18.     END ) as CT_TOT
  19. FROM budget.APPLI_OBJS ao
  20.   JOIN budget.SUIVI_ACTIVITE sa ON ao.ID_APPLI = sa.ID_APPLIPROJET
  21.   JOIN budget.PROJET_ACTIVITE pa ON ao.ID_APPLI = pa.ID_APPLIPROJET AND sa.ID_ACTIVITE = pa.ID_ACTIVITE
  22.     JOIN budget.QUALIFICATION q ON YEAR(sa.DATE_SUIVI) = q.ANNEE
  23.     JOIN budget.CRHA c ON sa.ID_CRHA = c.ID_CRHA
  24.       JOIN budget.QUALIF_CHEMINOT qc ON c.ID_RESSOURCE = qc.CP_CHEMINOT AND sa.DATE_SUIVI BETWEEN qc.DATE_DEBUT_QUALIF AND qc.DATE_FIN_QUALIF
  25. WHERE
  26.   YEAR(sa.DATE_SUIVI) = '2006'
  27.   AND ao.ID_OBJS = '2'
  28.   AND c.ID_RESSOURCE IN (SELECT CP_CHEMINOT FROM budget.CHEMINOT)
  29.   AND c.BVALIDE = true
  30. GROUP BY ao.ID_APPLI, pa.ID_ACTIVITE;

n°1396395
boulax
Inserer phrase hype en anglais
Posté le 28-06-2006 à 11:25:33  profilanswer
 

Oh et puis flute [:manust]


---------------
Posté depuis des chiottes, sales. Me gusta.
n°1396399
betsamee
Asterisk Zeperyl
Posté le 28-06-2006 à 11:27:17  profilanswer
 

ouais bon en resume on a pas compris la question , on a pas compris la solution => on a tout gagne en essayant de t'aider


Message édité par betsamee le 28-06-2006 à 11:27:29
n°1396406
brasseld
Posté le 28-06-2006 à 11:34:07  profilanswer
 

boulax a écrit :

Oh et puis flute [:manust]


???
 
Sinon j'avais une erreur de syntaxe sur le case de ma requête et je n'arrivais pas à savoir comment l'éviter.
 

n°1396409
betsamee
Asterisk Zeperyl
Posté le 28-06-2006 à 11:37:21  profilanswer
 

CASE 1
WHEN CONDITION1 THEN TRUC1;
WHEN CONDITION2 THEN TRUC2;
WHEN CONDITIONN THEN TRUCN;
END as NOMAAFFICHER

n°1396411
boulax
Inserer phrase hype en anglais
Posté le 28-06-2006 à 11:39:21  profilanswer
 

betsamee a écrit :

CASE 1
WHEN CONDITION1 THEN TRUC1;
WHEN CONDITION2 THEN TRUC2;
WHEN CONDITIONN THEN TRUCN;
END as NOMAAFFICHER


D'apres la doc tu peux te passer du 1 et faire un case when, then, when, then, else, end sans probleme.


---------------
Posté depuis des chiottes, sales. Me gusta.
n°1396412
brasseld
Posté le 28-06-2006 à 11:40:03  profilanswer
 

Oui mais il n'y a pas que ce schéma pour un CASE (voir ma solution)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Probleme de requete MySQL avec des controles CASE

 

Sujets relatifs
[PHP/MySQL]Rendre une cnx persistante au pool avant la fin du script?Problème SecureRandom et environnement
afficher le résultat d'une simple requetePHP-MySQL : probleme de connexion MySQL
Problème envoie image + redimenssionnement : marche pasProblème ouverture page popup
Problème ouverture d'une popup[RESOLU] requete avec condition
Problème affichage données par extraction MySQL après vérification mdp 
Plus de sujets relatifs à : Probleme de requete MySQL avec des controles CASE


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR