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 :

Combinaison de Group By et max


Sujet :

Langage SQL

  1. #1
    Membre très actif
    Inscrit en
    Mars 2006
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 121
    Par défaut Combinaison de Group By et max
    Bonjour,

    Je travaille sur un projet avec une base de données access, les relations sont dans l'image en PJ.

    Explication : Le principe, c'est que j'ai une table 'materiel', représentant les matériel, une deuxième table 'etat_materiel', contenant une liste d'état par lesquelles peut passer un matériel (panne, disponible, réservé, perdu, ..)

    Chaque matériel passe par des états, ces passages sont historisés dans la table croisée 'materiel_x_etat_materiel', donc, pour chaque matériel, on trouve plusieurs enregistrements le concernant dans cette table croisée, avec divers dates.

    Ma question est par rapport au besoin suivant : Je veux une requête sql, qui permet de récupérer l'ensemble des matériels, avec, pour chaque élément, le dernier etat dans lequel il est (max (date));

    en se basant sur le schéma dans la piece jointe, je veux précisément avoir :
    - les champs 'id' et 'reference' (la table 'materiel')
    - les champs 'date' et 'commentaire' (la table 'materiel_x_etat_materiel'), la date doit être la date du dernier etat enregistré pour ce materiel)
    - les champs 'id', 'code' et 'nom' à partir de la table 'etat_materiel'

    merci.
    Images attachées Images attachées  

  2. #2
    Membre très actif
    Inscrit en
    Mars 2006
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 121
    Par défaut
    J'ai trouvé une solution, la requête est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    select m.reference, m2.etat_date, mxe.commentaire, e.nom
    from materiel m,
    (SELECT mxe.materiel_id, Max(mxe.date) AS etat_date
    FROM materiel_x_etat_materiel AS mxe
    GROUP BY mxe.materiel_id) m2,
    materiel_x_etat_materiel mxe,
    etat_materiel e
     
    where  m.id = m2.materiel_id
    and mxe.materiel_id = mxe.materiel_id
    and mxe.date = m2.etat_date
    and mxe.etat_materiel_id=e.id
    Mais, est ce que il y a une meilleure façon pour faire la même chose ?

Discussions similaires

  1. pb. entre group by et max
    Par JDEPIAPIA dans le forum Langage SQL
    Réponses: 11
    Dernier message: 05/08/2008, 17h01
  2. Somme Group by et Max date
    Par mamiberkof dans le forum Langage SQL
    Réponses: 5
    Dernier message: 03/04/2008, 16h48
  3. access 2003 group by et max
    Par Bba_M dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 29/01/2008, 15h00
  4. pb GROUP BY et max()
    Par wac9258 dans le forum Requêtes
    Réponses: 1
    Dernier message: 27/03/2007, 19h56
  5. [SQL2005] group by et max(date)
    Par BOUBOU81 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 11/12/2006, 16h54

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