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 :

Récupérer le maximum à partir des n-uplets!


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 53
    Points : 34
    Points
    34
    Par défaut Récupérer le maximum à partir des n-uplets!
    Bonsoir,

    je vous présente mon probléme
    en fait j'ai deux tables :mouvement et moteur ,


    table moteur englobe les champs suivant : matricule -puissance forme-tension-intensité


    Table mouvement : matricule(cléetrangére) -date mouvement -atelier


    Chaque moteur effectue plusieurs mouvements.


    Je veux extraire des deux tables les moteurs verifiant certains criteres que je poste.

    select * from moteur mouvement where critéres postés and moteur.matricule=mouvement.matricule and date in select max(date) from mouvement

    Lorsque la joiture est effectué normalement on pour chaque matricule plusieurs mouvement mais je veux extraire que le mouvement dont la date est maximum pour chaque matricule.

    La requete précedente ne retourne aucun résultat
    est ce que vous pouvez m'aider merci

  2. #2
    Membre régulier
    Inscrit en
    Septembre 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 63
    Points : 71
    Points
    71
    Par défaut
    Citation Envoyé par rach20032 Voir le message
    en fait j'ai deux tables :mouvement et moteur ,

    table moteur englobe les champs suivant : matricule -puissance forme-tension-intensité

    Table mouvement : matricule(cléetrangére) -date mouvement -atelier

    Chaque moteur effectue plusieurs mouvements.

    Je veux extraire des deux tables les moteurs verifiant certains criteres que je poste.

    select * from moteur mouvement where critéres postés and moteur.matricule=mouvement.matricule and date in select max(date) from mouvement

    Lorsque la joiture est effectué normalement on pour chaque matricule plusieurs mouvement mais je veux extraire que le mouvement dont la date est maximum pour chaque matricule.

    La requete précedente ne retourne aucun résultat
    est ce que vous pouvez m'aider merci
    En requete je tenterais bien celle la

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select * 
    from moteur a, mouvement b --j'aime bien donner des alias
    where critéres postés --je suppose que ca ressemble à a.puissance=180 and b.atelier='CHEZPIERROT'
    and a.matricule=b.matricule 
    and b.date = --une petite requete qui te permet de recuperer les dernieres occurences de ta table
    (select max(bb.date) from mouvement bb where bb.matricule = b.matricule and bb.date <= SYSDATE)

    Mais un truc me chagrine... tu dis que pour un moteur il peut y avoir plusieurs mouvement !
    donc je suppose que ta table moteur est incomplete !

    table moteur
    ID_moteur --pour avoir plusieurs mouvement pour un moteur il te faut une PK et une FK
    matricule --Je considere que c'est la clé de la table mouvement
    puissance
    forme
    tension
    intensité

    Voila dis moi si je me trompe dans le raisonnement Merci

  3. #3
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 103
    Points : 28 400
    Points
    28 400
    Par défaut
    Voici une structure de requête pour sélectionner les lignes correspondant à la date la plus récente pour chaque id_groupe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT  t1.* 
    FROM    matable AS t1 
    WHERE   EXISTS 
            (   SELECT  1 
                FROM    matable AS t2 
                WHERE   t1.id_groupe = t2.id_groupe 
                HAVING  t1.col_date = MAX(t2.col_date) 
            ) 
    ;
    Je te laisse l'adapter à ton cas...

  4. #4
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 53
    Points : 34
    Points
    34
    Par défaut
    Merci lux08 votre aide etait bénéfique merci infinement

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

Discussions similaires

  1. [Toutes versions] Récupérer une date à partir des valeurs de 3 ComboBox
    Par ch0ubida dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 03/12/2014, 11h48
  2. Réponses: 3
    Dernier message: 22/06/2009, 16h34
  3. Réponses: 3
    Dernier message: 12/04/2009, 00h19
  4. Récupérer données à partir des binaires
    Par iowa dans le forum MySQL
    Réponses: 4
    Dernier message: 10/03/2009, 09h58
  5. Récupérer les données à partir des zones de textes
    Par TSniper dans le forum NetBeans
    Réponses: 12
    Dernier message: 09/04/2008, 12h46

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