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

MS SQL Server Discussion :

Jointure avec une table d'historique et sélection du plus récent


Sujet :

MS SQL Server

  1. #1
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2007
    Messages : 696
    Points : 222
    Points
    222
    Par défaut Jointure avec une table d'historique et sélection du plus récent
    Bonjour à tous,

    Imaginons que j'ai 3 tables sur SQL Server.
    voici mes tables fictives (je ne peux pas donner les vrais noms de table je pense, c'est confidentiel. et les tables sont compliquées en plus ^^).

    Article :
    article_id, nom_article, prix...

    Statut :
    statut_id, nom_statut

    Statut_Hist :
    code_fsav_statut, statut_id, article_id, date_statut...

    L’objectif est de sélection tous les articles, et leur statut le plus récent. Ouille, l'utilisation du GROUP BY sur SQL SERVER est plus compliquée que sur MySQL ^^
    Je suis un peu perdu je l'avoue, pourriez-vous m'aider svp ?

    Je continue mes recherches et mes tentatives, mais je dois rendre un résultat assez rapidement.

    Merci.

  2. #2
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2007
    Messages : 696
    Points : 222
    Points
    222
    Par défaut
    ma requête actuelle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT a.article_id, sh.statut_id, sh.date_statut
    FROM article AS a
    INNER JOIN Statut_Hist AS sh ON sh.article_id = a.article_id
    GROUP BY a.article_id, sh.statut_id, sh.date_statut
    ORDER BY a.article_id DESC, sh.date_statut DESC
    J'obtiens tous les articles, mais aussi tout l'historique de statut pour chacun d'entre eux. Il me faut le statut le plus récent de chacun... Je suis bloqué :/

    1342 1 2011-07-12 14:39:34.137
    1341 6 2011-06-30 13:44:56.933
    1341 5 2011-06-30 13:43:44.770
    1341 4 2011-06-30 13:43:06.307
    1341 3 2011-06-30 13:42:57.787
    1341 2 2011-06-30 13:42:55.263
    1341 3 2011-06-30 13:42:27.947
    1341 2 2011-06-30 13:41:43.340
    1341 1 2011-06-29 10:07:52.863
    1340 1 2011-06-17 13:32:47.457
    1339 1 2011-06-17 13:30:11.950
    1338 1 2011-05-26 15:27:29.737
    1337 6 2011-06-22 16:42:37.533
    1337 5 2011-05-10 17:29:57.560
    1337 4 2011-05-10 17:29:49.297
    1337 3 2011-05-10 17:29:34.140
    1337 2 2011-05-10 17:27:04.260
    1337 1 2011-05-10 16:50:43.343
    1335 6 2011-06-30 13:45:40.683
    1335 5 2011-05-10 16:46:03.993
    1335 4 2011-05-10 16:45:56.700
    1335 3 2011-05-10 16:45:49.500

  3. #3
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2007
    Messages : 696
    Points : 222
    Points
    222
    Par défaut
    problème résolu :

    SELECT a.article_id, MAX(sh2.date_statut) AS date_statut2
    FROM article AS a
    INNER JOIN Statut_Hist AS sh ON sh.article_id = a.article_id
    INNER JOIN Statut_Hist AS sh2 ON sh2.article_id = a.article_id
    GROUP BY a.article_id
    ORDER BY a.article_id DESC
    ça marche comme je le voulais ^^
    Merci quand même. en tout cas ce sera utile aux personnes passant par là et qui auront le même problème.

  4. #4
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2007
    Messages : 696
    Points : 222
    Points
    222
    Par défaut
    problème non résolu, je me suis rendu compte que je ne peux pas obtenir le champ id_statut, que la date la plus récente >_<

    Je relance donc le sujet, en espérant que certains pourront m'aider svp.

  5. #5
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2007
    Messages : 696
    Points : 222
    Points
    222
    Par défaut
    Voila, j'ai bien avancé. voici la base de me raquête SQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT a.article_id, sh.code_fsav_statut, sh.statut_id, sh.date_statut
    FROM article AS a
    INNER JOIN Statut_Hist AS sh ON sh.article_id = a.article_id
    INNER JOIN Statut_Hist AS sh2 ON sh2.article_id = a.article_id
    GROUP BY a.article_id, sh.code_fsav_statut, sh.statut_id, sh.date_statut
    HAVING sh.date_statut = MAX(sh2.date_statut)
    ORDER BY a.article_id DESC
    voila, j'espère n'avoir fait aucune erreur durant ma retranscription, en tout cas ça a l'air de fonctionner de mon coté

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

Discussions similaires

  1. Jointure avec une table recursive
    Par ParisMath dans le forum SQL
    Réponses: 3
    Dernier message: 22/01/2010, 14h53
  2. jointure avec une table incrémentée
    Par pp_le_moko dans le forum Débuter
    Réponses: 4
    Dernier message: 09/12/2009, 17h09
  3. jointure avec une table dans une autre DB
    Par bastringue dans le forum Langage SQL
    Réponses: 3
    Dernier message: 26/05/2008, 15h34
  4. Réponses: 1
    Dernier message: 18/07/2007, 11h58
  5. Réponses: 1
    Dernier message: 18/01/2006, 17h51

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