IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Imbrication If et case en cascade


Sujet :

Requêtes MySQL

  1. #1
    Membre actif
    Inscrit en
    Avril 2009
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 308
    Points : 231
    Points
    231
    Par défaut Imbrication If et case en cascade
    Bonjour !

    J'ai un petit souci, je trouve pas la syntaxe pour imbriquer plusieurs IF qui eux même contiennent un case.
    Je me perd dans les parenthèses et les 'else' ...

    Voici un IF qui marche bien.
    Je dois y imbriquer la même structure avec des Idtype_service différents.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if(idtype_service=20090,		
    case 
       when  max(_TARIF_SERVICE_CLIENT)>0  then max(_TARIF_SERVICE_CLIENT)  
       when  max(_TARIF_SERVICE_PAYS)>0  then max(_TARIF_SERVICE_PAYS)  
       when  max(_TARIF_SERVICE_MARCHE)>0  then  max(_TARIF_SERVICE_MARCHE)  
       when  max(_TARIF_SERVICE_PUBLIC)>0  then max(_TARIF_SERVICE_PUBLIC) 
     
    end ,0) as 'Double'
    Ceci...ne marche pas...
    Sûrement un souci de parenthèse ou d'alias mal positionné mais je trouve pas la bonne manière pour imbriquer le tout...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    if(idtype_service=20090,		
    	case 
    		when  max(_TARIF_SERVICE_CLIENT)>0  then max(_TARIF_SERVICE_CLIENT)  
    		when  max(_TARIF_SERVICE_PAYS)>0  then max(_TARIF_SERVICE_PAYS)  
    		when  max(_TARIF_SERVICE_MARCHE)>0  then max(_TARIF_SERVICE_MARCHE)  
    		when  max(_TARIF_SERVICE_PUBLIC)>0  then max(_TARIF_SERVICE_PUBLIC) 
    	end ,
     
    	if(idtype_service=20475,		
    		case 
    			when  max(_TARIF_SERVICE_CLIENT)>0  then max(_TARIF_SERVICE_CLIENT)  
    			when  max(_TARIF_SERVICE_PAYS)>0  then max(_TARIF_SERVICE_PAYS)  
    			when  max(_TARIF_SERVICE_MARCHE)>0  then max(_TARIF_SERVICE_MARCHE)  
    			when  max(_TARIF_SERVICE_PUBLIC)>0  then max(_TARIF_SERVICE_PUBLIC) 
    		end ,
     
    		if(idtype_service=20091,		
    			case 
    					when  max(_TARIF_SERVICE_CLIENT)>0  then max(_TARIF_SERVICE_CLIENT)  
    					when  max(_TARIF_SERVICE_PAYS)>0  then max(_TARIF_SERVICE_PAYS)  
    					when  max(_TARIF_SERVICE_MARCHE)>0  then max(_TARIF_SERVICE_MARCHE)  
    					when  max(_TARIF_SERVICE_PUBLIC)>0  then max(_TARIF_SERVICE_PUBLIC) 
    			end ,
    			if(idtype_service=20093,		
    				case 
    					when  max(_TARIF_SERVICE_CLIENT)>0  then max(_TARIF_SERVICE_CLIENT)  
    					when  max(_TARIF_SERVICE_PAYS)>0  then max(_TARIF_SERVICE_PAYS)  
    					when  max(_TARIF_SERVICE_MARCHE)>0  then max(_TARIF_SERVICE_MARCHE)  
    					when  max(_TARIF_SERVICE_PUBLIC)>0  then max(_TARIF_SERVICE_PUBLIC) 
    				end ,
    				if(idtype_service=20927,		
    					case 
    						when  max(_TARIF_SERVICE_CLIENT)>0  then max(_TARIF_SERVICE_CLIENT)  
    						when  max(_TARIF_SERVICE_PAYS)>0  then max(_TARIF_SERVICE_PAYS)  
    						when  max(_TARIF_SERVICE_MARCHE)>0  then max(_TARIF_SERVICE_MARCHE)  
    						when  max(_TARIF_SERVICE_PUBLIC)>0  then max(_TARIF_SERVICE_PUBLIC) 
    					end 
    				,0) as 'QUADRUPLE'
    			,0) as 'TRIPLE'
    		,0) as 'SINGLE'
    	,0) as 'TWIN'
    ,0) as 'DOUBLE'
    Merci pour votre aide...

  2. #2
    Membre à l'essai
    Inscrit en
    Mai 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 7
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    regarde bien tes IF ; il me semble qu'ils ont tous un paramètre en trop (sauf le dernier imbriqué)

    syntaxe correcte IF(test,expr1,expr2)

    toi : IF(test,expr1,expr2,0)

Discussions similaires

  1. Imbrication de case ?
    Par lsda26 dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 23/09/2013, 10h33
  2. Cases à cocher et décocher en cascade
    Par WAS92 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/06/2011, 17h14
  3. Valider en cascade case à cocher
    Par pascalourox dans le forum IHM
    Réponses: 1
    Dernier message: 21/09/2008, 15h35
  4. Case à cocher en "cascade"
    Par Fredo67 dans le forum VBA Access
    Réponses: 3
    Dernier message: 03/10/2007, 18h14
  5. imbrication de 2 requetes en cascade
    Par @rkane dans le forum Access
    Réponses: 4
    Dernier message: 11/09/2006, 23h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo