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ération avec MAX(Date)


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 64
    Points : 49
    Points
    49
    Par défaut récupération avec MAX(Date)
    Bonjour,

    J'ai des lignes dans une table qui sont de cette forme :
    Code_Article, Domaine,Date

    Domaine peut être soit Achat, soit Vente.
    Par conséquent, pour 1 article, je peux avoir plusieurs lignes de ventes et aussi d'achats
    Toto1,Achat,15/10/2010
    Toto1,Achat, 10/09/2009
    Toto1,Vente,20/12/2009
    Toto1,Vente,12/11/2008

    J'aimerais récupérer pour un article la dernière date d'achat et la dernière date de vente, j'arrive bien à récupérer la dernière date en utilisant MAX(date) mais par contre, j'ai toujours la notion vente et achat...
    Comment je peux faire pour avoir
    Code_Article,DernièreDateAchat,DernièreDateVente
    Toto1,15/10/2010,20/12/2009

    Merci d'avance

    Elise

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 394
    Points
    18 394
    Par défaut
    Quel est votre SGBD ?

  3. #3
    Membre actif Avatar de hazamor
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2008
    Messages : 179
    Points : 206
    Points
    206
    Par défaut
    Essaye avec cette requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT t1.Code_Article, max( t1.`date` ) max_date_vente, t3.max_date_achat
    FROM ma_table t1, (SELECT t2.Code_Article, max( t2.`date` ) max_date_achat
    					FROM ma_table t2
    					where t2.domaine='achat'
    					GROUP BY t2.`Code_Article`
    					) t3
    where t1.`Code_Article`=t3.`Code_Article`
    and t1.domaine='vente'
    GROUP BY t1.`Code_Article`

  4. #4
    Membre actif Avatar de hazamor
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2008
    Messages : 179
    Points : 206
    Points
    206
    Par défaut
    Citation Envoyé par hazamor Voir le message
    Essaye avec cette requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT t1.Code_Article, max( t1.`date` ) max_date_vente, t3.max_date_achat
    FROM ma_table t1, (SELECT t2.Code_Article, max( t2.`date` ) max_date_achat
    					FROM ma_table t2
    					where t2.domaine='achat'
    					GROUP BY t2.`Code_Article`
    					) t3
    where t1.`Code_Article`=t3.`Code_Article`
    and t1.domaine='vente'
    GROUP BY t1.`Code_Article`
    Pardon, je viens de réviser ma requête et je trouve qu'elle ne garantie pas tous les cas (exemple: article acheté et pas encore vendue) donc tu peux essaye celle là:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT DISTINCT t1.Code_Article,max_date_achat,max_date_vente
    FROM ma_table t1 
    LEFT JOIN (SELECT t2.Code_Article, max( t2.`date` ) max_date_achat
    					FROM ma_table t2
    					where t2.domaine='achat'
    					GROUP BY t2.`Code_Article`
    					) t3 on (t3.`Code_Article`=t1.`Code_Article`)
     
    LEFT JOIN (SELECT t4.Code_Article, max( t4.`date` ) max_date_vente
    					FROM ma_table t4
    					where t4.domaine='vente'
    					GROUP BY t4.`Code_Article`
    					) t5 on (t5.`Code_Article`=t1.`Code_Article`)

  5. #5
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2010
    Messages : 44
    Points : 69
    Points
    69
    Par défaut
    Bonsoir,

    Je vous propose un PIVOT :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT Code_Article
          ,MAX(CASE Domaine WHEN 'Achat' THEN Date END) MaxAchat
          ,MAX(CASE Domaine WHEN 'Vente' THEN Date END) MaxVente
      FROM MaTable
    GROUP BY Code_Article
    Cdlt,
    OD

Discussions similaires

  1. Récupération enregistrement avec max(date)
    Par pinocchio dans le forum SQL
    Réponses: 11
    Dernier message: 18/04/2012, 17h13
  2. left join avec max(date)
    Par supernicoco dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/10/2008, 09h53
  3. problème avec MAX(Date)
    Par ouchemhou dans le forum Langage SQL
    Réponses: 12
    Dernier message: 23/08/2008, 18h13
  4. Requête avec max date et champs correspondants
    Par sl1980 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 23/09/2007, 01h01
  5. Select Avec Max(date)
    Par Poisson59 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 24/08/2006, 18h26

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