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

Langage SQL Discussion :

selection par la plus grande date d'une année


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 46
    Par défaut selection par la plus grande date d'une année
    Yo !

    J'ai une table SITUATION avec :
    num_eleve (id) int
    date_debut date
    num_et varchar
    code_classe varchar

    elle sert a renseigner l'utilisateur sur la situation scolaire d'un eleve

    J'ai du faire un état, qui selectionne les dernieres situations des eleves a une année donnée et par numero d'etablissement. J'ai donc fait cette requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT num_eleve, date_debut, num_et, code_classe
    FROM SITUATION 
    WHERE num_et = '0420044V ' 
    AND YEAR(date_debut) = '2007'
    Ce qui me donne ce résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    5  	2007-02-19  	0420044V  	BTS IG
    5 	2007-02-20 	0420044V 	master info
    5 	2007-02-23 	0420044V 	T STG
    5 	2007-04-30 	0420044V 	2nd ISI
    7 	2007-02-20 	0420044V 	L3 miage
    8 	2007-02-20 	0420044V 	CE1
    Petit problème : comme vous le voyez, on peut visualiser plusieurs eleves si on a enregistré plusieurs situations dans une meme année, et il ne faut qu'une seulle ligne par élève qui retrace sa derniere situation. J'ai essayé plusieurs methodes comme celle ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT num_eleve, max(date_debut), num_et, code_classe
    FROM SITUATION 
    WHERE num_et = '0420044V ' 
    AND YEAR(date_debut) = '2007' 
    group by num_eleve
    Mais sa melange tout :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    5       2007-04-30  	0420044V  	BTS IG
    7 	2007-02-20 	0420044V 	L3 miage
    8 	2007-02-20 	0420044V 	CE1
    Si vous avez une solution, ça m'aiderait bien ^^

    merci d'avance

  2. #2
    Membre éprouvé
    Inscrit en
    Juin 2003
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 107
    Par défaut
    Essayer d'adapter cette requete à ta base( j'ai utilisé Oracle 9i)

    SELECT a.num_eleve, a.date_debut,a.num_et, a.code_classe
    FROM SITUATION a
    WHERE a.num_et = '0420044V '
    AND to_char(a.date_debut, 'YYYY') = '2007'
    AND a.date_debut = (select max(b.date_debut) from SITUATION b where a.num_eleve = b.num_eleve group by a.num_eleve)

    Ca donne les resultats demandés :

    5 30/04/2007 0420044V 2nd ISI
    7 20/02/2007 0420044V L3 miage
    8 20/02/2007 0420044V CE1

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 46
    Par défaut
    Voila le code adapté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT num_eleve, date_debut, num_et, code_classe 
    FROM SITUATION A 
    WHERE num_et = '0420044V' 
    AND YEAR(date_debut) = '2007' 
    AND date_debut = (
    select max(date_debut) 
    from SITUATION B 
    where A.num_eleve = B.num_eleve 
    group by A.num_eleve
    )
    Ca ne donne aucune erreur, mais ça n'affiche rien (j'utilise mysql avec phpmyadmin)

    j'aurais peut etre du indiquer que la clé primaire est (num_eleve, date_debut) dsl

  4. #4
    Membre éprouvé
    Inscrit en
    Juin 2003
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 107
    Par défaut
    oups desolé faire
    GROUP BY B.num_eleve

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 46
    Par défaut
    ça ne fonctionne pas non plus

  6. #6
    Membre éprouvé
    Inscrit en
    Juin 2003
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 107
    Par défaut
    J'ai crée la table
    create table SITUATION
    (num_eleve number(2),
    date_debut date,
    num_et varchar2(10),
    code_classe varchar2(20));

    J ai ajouté les donnéés à la table SITUATION en utilisant sql loader
    5 2007-02-19 0420044V BTS IG
    5 2007-02-20 0420044V master info
    5 2007-02-23 0420044V T STG
    5 2007-04-30 0420044V 2nd ISI
    7 2007-02-20 0420044V L3 miage
    8 2007-02-20 0420044V CE1

    l'execution de la réquete suivante :

    SELECT A.num_eleve, A.date_debut, A.num_et, A.code_classe
    FROM SITUATION A
    WHERE A.num_et like '%0420044V%'
    AND A.date_debut = (
    SELECT max(B.date_debut)
    FROM SITUATION B
    WHERE B.num_eleve = A.num_eleve
    )

    donne :

    NUM_ELEVE DATE_DEBUT NUM_ET CODE_CLASSE
    5 30/04/2007 0420044V 2nd ISI
    7 20/02/2007 0420044V L3 miage
    8 20/02/2007 0420044V CE1


    C’est testé sur Oracle, il reste à l’adapter pour MySql.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Plus grande date par contexte
    Par PAYASS59 dans le forum Webi
    Réponses: 4
    Dernier message: 02/11/2011, 20h19
  2. [XL-2007] Remplir un textbox par le plus grand nombre d'une colonne
    Par dodo28 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/11/2009, 17h42
  3. Sélectionner une ligne par un ID avec la plus grande date
    Par lhonolulu dans le forum SAS Base
    Réponses: 5
    Dernier message: 03/06/2009, 18h47
  4. Réponses: 2
    Dernier message: 20/02/2007, 11h29
  5. VBA_E : Selection des 5 plus grandes valeurs d'une colonne..
    Par VBBBA dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/09/2006, 18h39

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