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

MySQL Discussion :

tri de donnée mysql


Sujet :

MySQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Alternant BTS Développement
    Inscrit en
    Octobre 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Alternant BTS Développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2015
    Messages : 14
    Points : 24
    Points
    24
    Par défaut tri de donnée mysql
    Bonjour à tous,

    J'ai un soucis quand à réaliser une requète MySQL pour faire un tri dans mes données:

    Explication: je dois afficher tous les candidats qui ont eu une note en dessous de 14 pour les épreuves '001','002','003' et qui ont Aussi eu une note inférieure à 7 pour les épreuves '007','008','301','302','303','304'.

    J'ai commencé à tester des solutions pour une condition mais les résultats ne sont pas la..

    Description des Tables

    cnd_epr : table des épreuves
    num_can : numéro d candidat
    cod_epr : le code de l'épreuve
    not_epr : la note obtenue à l'épreuve

    quelque test pour vous aider a comprendre mon problème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT candidat,
    notes001,
    notes002
     
     FROM (
    SELECT DISTINCT (cnd_epr.num_can) AS candidat,
           CASE cnd_epr.cod_epr WHEN  '001' 
               THEN cnd_epr.not_epr END  AS note001,
           CASE cnd_epr.cod_epr WHEN  '002' 
               THEN cnd_epr.not_epr END  AS note002
     
          FROM cnd_epr 
          ) AS triage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Select DISTINCT cnd_epr.num_can
    FROM
    (
    SELECT DISTINCT (cnd_epr.num_can) AS candidat,
           CASE  WHEN  cnd_epr.cod_epr IN ('001', '002', '003')  
               THEN cnd_epr.not_epr END  AS notegroupa
     
          FROM cnd_epr 
     ) AS s1
      WHERE cnd_epr.exa_men = 'dnbo' 
    	AND cnd_epr.exa_typ = 'dnb006' 
    	AND cnd_epr.exa_ann = '2015' 
    	AND cnd_epr.exa_ses = '06'
        AND notegroupa < 14
    Y'a t il quelqu'un qui pourrait m'éclaircir, Merci d'avance,
    Cordialement,
    BIGnotor.

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 141
    Points : 38 914
    Points
    38 914
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Essayez ceci :

    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
    SELECT num_can,                                                   
           cod_epr,                                                   
           not_epr                                                    
    FROM MA_TABLE MAIN                                                  
    WHERE MAIN.cod_epr IN ( 001 , 002 , 003 )                         
      AND MAIN.not_epr < 14                                           
      AND EXISTS                                                    
        (SELECT 1                                                   
         FROM MA_TABLE SUBQ                                             
         WHERE SUBQ.num_can = MAIN.num_can                              
           AND SUBQ.cod_epr IN ( 007 , 008 , 301 , 302 , 303 , 304 )  
           AND SUBQ.not_epr < 07)
    UNION                                                      
    SELECT num_can,                                              
           cod_epr,                                              
           not_epr                                               
    FROM MA_TABLE MAIN                                             
    WHERE MAIN.cod_epr IN ( 007 , 008 , 301 , 302 , 303 , 304 )  
      AND MAIN.not_epr < 07                                      
      AND EXISTS                                               
        (SELECT 1                                              
         FROM MA_TABLE SUBQ                                        
         WHERE SUBQ.num_can = MAIN.num_can                         
           AND SUBQ.cod_epr IN ( 001 , 002 , 003 )               
           AND SUBQ.not_epr < 14)

  3. #3
    Membre à l'essai
    Homme Profil pro
    Alternant BTS Développement
    Inscrit en
    Octobre 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Alternant BTS Développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2015
    Messages : 14
    Points : 24
    Points
    24
    Par défaut
    Bonjour, merci d'avoir répondu,

    à quoi correspond ma table subq ? tout est dans la même tables, juste des colonnes différentes..

    De mon coté j'en suis arrivé à ceci en final.. ca met du temps a s'éxecuter mais ca me sors quelque chose d'assez cohérant, j'approfondirai demain
    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
    SELECT DISTINCT nmn_can, nom_can, pre_can, cnd.num_can 
     
    FROM cnd_epr, 
    (SELECT cnd_epr.num_can, 
    	CASE WHEN cnd_epr.cod_epr = '001' THEN cnd_epr.not_epr < 14 
    		 WHEN cnd_epr.cod_epr = '002' THEN cnd_epr.not_epr < 14 
             WHEN cnd_epr.cod_epr = '003' THEN cnd_epr.not_epr < 14 
             WHEN cnd_epr.cod_epr = '007' THEN cnd_epr.not_epr < 7 
             WHEN cnd_epr.cod_epr = '008' THEN cnd_epr.not_epr < 7 
             WHEN cnd_epr.cod_epr = '301' THEN cnd_epr.not_epr < 7 
             WHEN cnd_epr.cod_epr = '302' THEN cnd_epr.not_epr < 7 
             WHEN cnd_epr.cod_epr = '303' THEN cnd_epr.not_epr < 7 
             WHEN cnd_epr.cod_epr = '304' THEN cnd_epr.not_epr < 7 END 
        FROM cnd_epr) as test001 
    WHERE   cnd.exa_men = 'dnbo' 
    	AND cnd.exa_typ = 'dnb006' 
    	AND cnd.exa_ann = '2015' 
    	AND cnd.exa_ses = '06' 
    	AND cnd.cod_cat = '520' 
        AND cnd_epr.num_can IN 
        (SELECT cnd_epr.num_can 
        FROM cnd_epr
        WHERE   cnd_grp.exa_men = 'dnbo' 
    		AND cnd_grp.exa_typ = 'dnb006' 
    		AND cnd_grp.exa_ann = '2015' 
    		AND cnd_grp.exa_ses = '06' 
    		AND cnd_grp.moy_cal < 9.59  
    		AND cnd_grp.moy_cal > 9 )
     
    	AND cnd.num_can = cnd_grp.num_can 
        AND cnd_grp.num_can = cnd_epr.num_can
    bye

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 141
    Points : 38 914
    Points
    38 914
    Billets dans le blog
    9
    Par défaut
    SUBQ est juste un alias (un surnom) qui permet de faire une sous-requête (subquery) sur la même table
    de même MAIN est un alias pour désigner cette table dans la requête principale
    On ne peut pas utiliser plusieurs fois une même table dans une requête sans utiliser d'alias

    J'ai testé cette requête avant de vous la proposer, vous pouvez donc l'utiliser telle qu'elle

    EDIT : pensez juste à modifier les prédicats in, dans mon jeu d'essai, j'ai créé la colonne épreuve en numérique, de votre coté, il faut donc ajouter les simples quotes

  5. #5
    Membre à l'essai
    Homme Profil pro
    Alternant BTS Développement
    Inscrit en
    Octobre 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Alternant BTS Développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2015
    Messages : 14
    Points : 24
    Points
    24
    Par défaut Requete presque terminée
    j'ai passé la fin de la semaine a essayer d'améliorer cette requete et je n'obtient pas de résultat... je suis en galère encore.. si vous pouviez m'aider encore une fois Merci d'avance
    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
    43
    SELECT DISTINCT nmn_can, nom_can, pre_can, c.num_can 
     
    FROM cnd_epr, cnd c,
     
    	(SELECT num_can, cod_epr, not_epr 
    	FROM cnd_epr a   
    	WHERE a.cod_epr IN ( '001' , '002' , '003' )  
    	    AND a.not_epr < 14 
    	    AND EXISTS 
    		  (SELECT 1  
    		   FROM cnd_epr b  
    		   WHERE b.num_can = a.num_can 
    		       AND b.cod_epr IN ( '007' , '008' , '301' , '302' , '303' , '304' )  
    		       AND b.not_epr < 07) 
           UNION  
    	(SELECT num_can, cod_epr, not_epr 
    	FROM cnd_epr a 
    	WHERE a.cod_epr IN ( '007' , '008' , '301' , '302' , '303' , '304' ) 
    	    AND a.not_epr < 07 
    	    AND EXISTS  
    		  (SELECT 1 
    		   FROM cnd_epr b 
    		   WHERE b.num_can = a.num_can 
    		       AND b.cod_epr IN ( '001' , '002' , '003' ) 
    		       AND b.not_epr < 14)))RQ
     
    WHERE cnd.exa_men = 'dnbo' 
        AND cnd.exa_typ = 'dnb006' 
        AND cnd.exa_ann = '2015' 
        AND cnd.exa_ses = '06' 
        AND cnd.cod_cat = '520' 
        AND EXISTS  
        (SELECT 1 
        FROM cnd_epr c
        WHERE   c.num_can = c.num_can
            AND c.exa_men = 'dnbo' 
    	AND c.exa_typ = 'dnb006' 
    	AND c.exa_ann = '2015' 
    	AND c.exa_ses = '06' 
    	AND c.moy_cal < 9.59  
    	AND c.moy_cal > 9) 
    AND cnd.num_can = cnd_epr.num_can 
    AND cnd_epr.num_can = cnd_grp.num_can

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 141
    Points : 38 914
    Points
    38 914
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Je vous ai envoyé la requête qui correspond exactement à votre expression de besoin initial, ici visiblement c'est un nouveau besoin ou une grosse évolution

    Le plus simple est que vous reformuliez votre nouveau besoin fonctionnel, afin que les contributeurs puissent vous proposer une nouvelle solution

  7. #7
    Membre à l'essai
    Homme Profil pro
    Alternant BTS Développement
    Inscrit en
    Octobre 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Alternant BTS Développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2015
    Messages : 14
    Points : 24
    Points
    24
    Par défaut Requête entière
    La requête dont nous avons besoin a pour but d'identifier les candidats qui correspondent à tous les critères suivants :
    - candidats individuels (code 520)
    - candidats ayant une moyenne générale comprise entre 9 et 9.59
    - candidats ayant 2 notes maximum comprises entre 0 et 6.99 :
    -- ces 2 notes sont des notes sur 20, donc besoin de convertir les notes sur 40 (français '001', maths '002' et histoire-géo '003') pour que cette condition de note inférieure à 7 soit respectée. (reste des notes: '007' '008' '301' '302' '303' '304')

    J'ai besoin d'avoir uniquement les noms et prénoms de ces candidats.

    Il y a des conditions obligatoires:
    exa_men = 'dnbo'
    exa_typ = 'dnb006'
    exa_ann = '2015'
    exa_ses = '06'

    TABLE CND = Informations sur le candidat (nom, prénom, num_can, cod_cat (520)...)
    TABLE CND_EPR = Informations sur l'épreuve (cod_epr ('001' ... '304') not_epr...)
    TABLE CND_GRP = Informations sur la moyenne (moy_cal < 9...)

    Et donc avec mes recherches et mes test, j'ai abouti a cela, mais cette requête ne marche pas..

    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
    43
    SELECT DISTINCT nmn_can, nom_can, pre_can, c.num_can 
     
    FROM cnd_epr, cnd c,
     
    	(SELECT num_can, cod_epr, not_epr 
    	FROM cnd_epr a   
    	WHERE a.cod_epr IN ( '001' , '002' , '003' )  
    	  AND a.not_epr < 14 
    	  AND EXISTS 
    		(SELECT 1  
    		 FROM cnd_epr b  
    		 WHERE b.num_can = a.num_can 
    		   AND b.cod_epr IN ( '007' , '008' , '301' , '302' , '303' , '304' )  
    		   AND b.not_epr < 07) 
           UNION  
    	(SELECT num_can, cod_epr, not_epr 
    	FROM cnd_epr a 
    	WHERE a.cod_epr IN ( '007' , '008' , '301' , '302' , '303' , '304' ) 
    	  AND a.not_epr < 07 
    	  AND EXISTS  
    		(SELECT 1 
    		 FROM cnd_epr b 
    		 WHERE b.num_can = a.num_can 
    		   AND b.cod_epr IN ( '001' , '002' , '003' ) 
    		   AND b.not_epr < 14)))RQ
     
    WHERE cnd.exa_men = 'dnbo' 
      AND cnd.exa_typ = 'dnb006' 
      AND cnd.exa_ann = '2015' 
      AND cnd.exa_ses = '06' 
      AND cnd.cod_cat = '520' 
      AND EXISTS  
        (SELECT 1 
        FROM cnd_epr c
        WHERE   c.num_can = c.num_can
            AND c.exa_men = 'dnbo' 
    		AND c.exa_typ = 'dnb006' 
    		AND c.exa_ann = '2015' 
    		AND c.exa_ses = '06' 
    		AND c.moy_cal < 9.59  
    		AND c.moy_cal > 9) 
    AND cnd.num_can = cnd_epr.num_can 
    AND cnd_epr.num_can = cnd_grp.num_can
    Cordialement

  8. #8
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 141
    Points : 38 914
    Points
    38 914
    Billets dans le blog
    9
    Par défaut
    La requete que je vous avais proposée pour votre 1er besoin n'est donc plus utilisable :

    Cette requete extrait les personnes ayant eu au moins 1 note < 7 pour les disciplines notées sur 20 ET au moins une note < 14 pour celles notées sur 40
    Or, dans votre nouveau besoin, une personne ayant au maximum 2 notes < 7/20 mais aucune note < 14/40 doit être extraite (et inversement)

    Afin de vous affranchir des problèmes de notation tantôt sur 20 tantôt sur 40, calculez la moyenne sur 20 pour toutes les matières avec un CASE when, puis extrayez les individus ayant maxi 2 notes < 7/20

    Vu que MySQL ne sait pas gérer les CTE, ca va vous faire pas mal de requetes imbriquées

  9. #9
    Membre à l'essai
    Homme Profil pro
    Alternant BTS Développement
    Inscrit en
    Octobre 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Alternant BTS Développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2015
    Messages : 14
    Points : 24
    Points
    24
    Par défaut Je poursuis encore et encore..........
    Je suis arrivé à ceci, ce qui a pas mal changé depuis le premier commentaire sur cette discussion mais je n'arrive pas a avoir de résultats concrès, je n'ai pas la "Mentalité MySQL".... :/

    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
    SELECT DISTINCT c.num_can, c.pre_can, c.nmn_can  
    FROM  cnd c, cnd_epr ce, 
    	(SELECT DISTINCT c.num_can, 
    	 CASE WHEN ce.cod_epr = '001' THEN ce.not_epr /2 
    		  WHEN ce.cod_epr = '002' THEN ce.not_epr /2 
              WHEN ce.cod_epr = '003' THEN ce.not_epr /2 END 
          FROM cnd_epr ce, cnd c  
         WHERE ce.exa_men = 'dnbo' 
    	   AND ce.exa_typ = 'dnb006' 
    	   AND ce.exa_ann = '2015' 
    	   AND ce.exa_ses = '06' 
    	   AND ce.cod_epr IN ('001','002','003','007','008','301','302','303','304') 
    	 HAVING COUNT(ce.not_epr) <= 2  ) AS notdiv2 , 
     
    	(SELECT DISTINCT c.num_can 
    	   FROM cnd c, cnd_grp cg  
    	   WHERE c.exa_men = 'dnbo' 
    	     AND c.exa_typ = 'dnb006' 
    	     AND c.exa_ann = '2015' 
    	     AND c.exa_ses = '06' 
    		 AND c.cod_cat = '520' 
             AND cg.moy_cal <= 9.59 
             AND cg.moy_cal >= 9 
             AND c.num_can = cg.num_can ) AS moygen      
    WHERE c.exa_men = 'dnbo' 
      AND c.exa_typ = 'dnb006' 
      AND c.exa_ann = '2015' 
      AND c.exa_ses = '06' 
      AND ce.exa_men = 'dnbo' 
      AND ce.exa_typ = 'dnb006' 
      AND ce.exa_ann = '2015' 
      AND ce.exa_ses = '06' 
      AND ce.num_can = c.num_can  
    ORDER BY c.num_can ASC
    Si vous apercevez une grosse erreur, dites le moi SVP,
    Cordialement.

  10. #10
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 141
    Points : 38 914
    Points
    38 914
    Billets dans le blog
    9
    Par défaut
    Encapsulez la requête ci-dessous pour faire une jointure avec votre table des candidats en filtrant ceux qui ont max 2 notes et le tour est joué

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT num_can, COUNT(*)                                              
    FROM                                                                  
       (SELECT EPR.num_can                                                
              ,EPR.cod_epr                                                
              ,CASE WHEN EPR.cod_epr BETWEEN '001' AND '003'              
                    THEN EPR.not_epr / 2                                  
               ELSE                                                       
                    EPR.not_epr                                           
               END AS N20                                                 
        FROM MATABLE AS EPR                                               
        WHERE EPR.cod_epr IN (001, 002, 003, 007, 008, 301, 302, 303, 304)
        ) AS TMP                                                          
        WHERE TMP.N20 < 7                                                 
        GROUP BY num_can

  11. #11
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 141
    Points : 38 914
    Points
    38 914
    Billets dans le blog
    9
    Par défaut
    Ce qui donne ceci :
    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
    SELECT CAN.num_can, CAN.nom, CAN.prenom, COUNT(*)     
    FROM                                                                  
       (SELECT EPR.num_can                                                
              ,EPR.cod_epr                                                
              ,CASE WHEN EPR.cod_epr BETWEEN '001' AND '003'              
                    THEN EPR.not_epr / 2                                  
               ELSE                                                       
                    EPR.not_epr                                           
               END AS N20                                                 
        FROM TAB_EPR AS EPR                                               
        WHERE EPR.cod_epr IN ('001', '002', '003', '007', '008', '301', '302', '303', '304')
        ) AS TMP            
       INNER JOIN TAB_CAN AS CAN              
          ON CAN.num_can = TMP.num_can              
       WHERE TMP.N20 < 7                        
         AND CAN.cod_cat = 520
       GROUP BY CAN.num_can, CAN.nom, CAN.prenom 
       HAVING COUNT(*) < 3

  12. #12
    Membre à l'essai
    Homme Profil pro
    Alternant BTS Développement
    Inscrit en
    Octobre 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Alternant BTS Développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2015
    Messages : 14
    Points : 24
    Points
    24
    Par défaut On y voit le bout..!!!
    Ah merci escartefigue, en 5 secondes, j'ai un résultat qui sors, par contre, je ne sais pas encore s'il est bon vu qu'il manque un critère, je voulais savoir pour mettre le critère de moyenne générale qui est dans la table cnd_grp, je refait un INNER JOIN ou je peux l'insérer directement dans la suite de la requete mère?

    je met le code:
    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
    SELECT c.num_can, c.nmn_can, c.pre_can     
    FROM                                                                  
       (SELECT ce.num_can                                                
              ,ce.cod_epr                                                
              ,CASE WHEN ce.cod_epr BETWEEN '001' AND '003'              
                    THEN ce.not_epr / 2                                  
               ELSE                                                       
                    ce.not_epr                                           
               END AS notdiv2                                                  
        FROM cnd_epr AS ce                                               
        WHERE ce.cod_epr IN ('001', '002', '003', '007', '008', '301', '302', '303', '304') 
        AND ce.exa_men = 'dnbo' 
    	AND ce.exa_typ = 'dnb006' 
    	AND ce.exa_ann = '2015' 
    	AND ce.exa_ses = '06' 
        ) AS TMP            
       INNER JOIN cnd AS c              
          ON c.num_can = TMP.num_can 
       INNER JOIN cnd_grp AS cg
    	  ON cg.num_can = c.num_can 
       WHERE TMP.notdiv2 < 7                        
         AND c.cod_cat = 520
         AND c.exa_men = 'dnbo' 
    	 AND c.exa_typ = 'dnb006' 
    	 AND c.exa_ann = '2015' 
    	 AND c.exa_ses = '06' 
         AND cg.moy_cal <= 9 
         AND cg.moy_cal >= 9.59 
       GROUP BY c.num_can, c.nmn_can, c.pre_can 
       HAVING COUNT(*) < 3
       ORDER BY c.nmn_can ASC

  13. #13
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 141
    Points : 38 914
    Points
    38 914
    Billets dans le blog
    9
    Par défaut
    Vous pouvez faire directement la jointure inner comme vous l'avez faite, par contre ce bout de code ne renverra jamais rien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
         AND cg.moy_cal <= 9 
         AND cg.moy_cal >= 9.59

  14. #14
    Membre à l'essai
    Homme Profil pro
    Alternant BTS Développement
    Inscrit en
    Octobre 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Alternant BTS Développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2015
    Messages : 14
    Points : 24
    Points
    24
    Par défaut
    autant pour moi (je perd la tête..)

Discussions similaires

  1. Tri des données provenant d'une requête mysql
    Par scrappilly dans le forum Langage SQL
    Réponses: 9
    Dernier message: 27/09/2011, 15h19
  2. probleme construction base de donnes MySql...Help
    Par chakan dans le forum Requêtes
    Réponses: 7
    Dernier message: 21/07/2004, 11h27
  3. connection à base de donnée MYSQL
    Par zouzou_zaza dans le forum Bases de données
    Réponses: 11
    Dernier message: 04/07/2004, 12h31
  4. XML->Base de donnée Mysql
    Par lheureuxaurelie dans le forum XQUERY/SGBD
    Réponses: 4
    Dernier message: 10/03/2004, 23h47
  5. [CR9] Tri de données
    Par Madduck dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 24/07/2003, 09h30

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