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 régulier
    Inscrit en
    Mars 2006
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 121
    Points : 110
    Points
    110
    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 régulier
    Inscrit en
    Mars 2006
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 121
    Points : 110
    Points
    110
    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