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 :

Ramener la derniere etape des commandes


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 66
    Points : 56
    Points
    56
    Par défaut Ramener la derniere etape des commandes
    Bonjour,

    J'ai quelques difficultés à faire une requête SQL qui parrait pourtant facile.

    J'ai 2 tables "etape" et "commande_has_etape".

    Commande_has_etape (#id_commande, #id_etape, date)
    Etape (id_etape, typedetape)

    Mon objectif est de ramener pour chaque commande le typedetape dont l'id_etape est le plus grand.


    Exemple avec des jeux d'essais:

    Lignes de la table:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    
    id_commande    id_etape       typedetape                   
    1                    1                 envoi
    1                    2                 reception
    1                    3                 validation
    2                    2                 reception
    Résultat voulu:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    id_commande    id_etape       typedetape  
    1                    3                 validation
    2                    2                 reception

    Résultat actuel...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    id_commande    id_etape       typedetape                   
    1                    3                 envoi
    2                    2                 reception
    ...avec cette requete:
    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
     
    SELECT 
        COMMANDE_HAS_ETAPE.id_commande, 
        MAX(COMMANDE_HAS_ETAPE.id_etape), 
        ETAPE.id_etape, 
        ETAPE.typedetape
     
    FROM 
        COMMANDE_HAS_ETAPE, 
        ETAPE
     
    WHERE 
        ETAPE.id_etape = COMMANDE_HAS_ETAPE.id_etape
     
    GROUP BY 
        COMMANDE_HAS_ETAPE.id_commande
    En faite il ne fait plus le lien entre la description et le max (ce qui me parait un peu normal puisque il ne pourrait pas le faire avec une fonction autre de groupe)


    Savez vous comment résoudre ce pb?

    Merci d'avance.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 874
    Points : 53 048
    Points
    53 048
    Billets dans le blog
    6
    Par défaut
    Si vous utilisiez des jointures normalisées à base de JOIN au lieu de faire vos jointure dans le WHERE (syntaxe de 1986... soit 20 ans de retard), la solution vous sauterais aux yeux !!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT CHE.id_commande, 
           ETP.id_etape 
     
    FROM  (SELECT id_commande, MAX(id_etape) AS id_etape
           FROM   COMMANDE_HAS_ETAPE
           GROUP  BY id_commande) AS CHE
          INNER JOIN ETAPE AS ETP
                ON CHE.id_etape = ETP.id_etape
    A +

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

Discussions similaires

  1. Transmettre des commandes à un process lancé par ksh
    Par jojolepabo dans le forum Linux
    Réponses: 3
    Dernier message: 19/10/2005, 16h05
  2. Réponses: 2
    Dernier message: 02/11/2004, 06h52
  3. Réponses: 3
    Dernier message: 24/05/2004, 16h20
  4. Interception des commandes in et out
    Par KDD dans le forum x86 16-bits
    Réponses: 13
    Dernier message: 18/12/2002, 16h55
  5. Réponses: 3
    Dernier message: 02/09/2002, 18h49

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