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

SQL Oracle Discussion :

Afficher la plus grande valeur dans une requête


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Homme Profil pro
    Cadre
    Inscrit en
    Septembre 2013
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Cadre
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2013
    Messages : 83
    Points : 65
    Points
    65
    Par défaut Afficher la plus grande valeur dans une requête
    Bonjour à tous,
    dans la requête suivante, je voudrai faire apparaître la date la plus récente de chaque valeur située en colonne 1.
    J'ai essayé avec MAX puis avec un SELECT MAX en vain.
    Merci d'avance pour votre aide.aaa.xls

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    SELECT article.arti_code "Art"
    ,article.arti_designation "désign"
    ,article.arti_qte_stock_ue "En stock"
    ,article.arti_stock_minimum "seuil"
    ,client_article.clar_clnt_code "Client"
    ,stock_mouvement.stmv_dt_mvt "Dt mvt"
    ,stock_mouvement.stmv_qte_ue "Qté"
    ,stock_mouvement.stmv_numero "N°"
         FROM article, client_article, stock_mouvement
            WHERE client_article.clar_arti_code = article.arti_code
               AND article.arti_gestion_source = 'F'
               AND article.arti_code = stock_mouvement.stmv_arti_code
               AND article.arti_code IN ('903548','903547')
     
    ORDER BY 1,8 desc

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 786
    Points
    30 786
    Par défaut
    Citation Envoyé par alexis trotta Voir le message
    je voudrais faire apparaître la date la plus récente de chaque valeur située en colonne 1.
    Mais la date en question, elle est dans quelle colonne ?

    As-tu cherché un peu dans ce forum, ou dans Langage SQL ? Cette question revient très régulièrement...
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre du Club
    Homme Profil pro
    Cadre
    Inscrit en
    Septembre 2013
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Cadre
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2013
    Messages : 83
    Points : 65
    Points
    65
    Par défaut
    Bonjour,
    j'ai travaillé sur la requête en question et voilà ce que j'obtiens en pièce jointe. Pour ces 2 articles (colonne 1) j'ai besoin que d'une seule ligne, celle qui a la date la plus récente.
    J'ai essayé avec un GROUP BY en fin de requête sans résultat.

    Code sql : 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 article.arti_code "Art"
    ,article.arti_designation "désign"
    ,article.arti_qte_stock_ue "En stock"
    ,article.arti_stock_minimum "seuil"
    ,client_article.clar_clnt_code "Client"
    ,(SELECT MAX(stock_mouvement.stmv_dt_mvt) 
                            FROM stock_mouvement
                                WHERE article.arti_code = stock_mouvement.stmv_arti_code
                                     GROUP BY article.arti_code) "Date mvt"
    ,stock_mouvement.stmv_qte_ue "Qté"
         FROM article, client_article, stock_mouvement
            WHERE client_article.clar_arti_code = arti_code
               AND article.arti_gestion_source = 'F'
               AND article.arti_code = stock_mouvement.stmv_arti_code
               AND article.arti_code IN ('903548','219410')
    Fichiers attachés Fichiers attachés
    • Type de fichier : xls aaa.xls (31,5 Ko, 104 affichages)

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    développeur Oracle
    Inscrit en
    Février 2014
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Roumanie

    Informations professionnelles :
    Activité : développeur Oracle
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2014
    Messages : 27
    Points : 26
    Points
    26
    Par défaut
    Tu peux remplacer la requête interne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT MAX(stock_mouvement.stmv_dt_mvt) 
    FROM stock_mouvement
    WHERE article.arti_code = stock_mouvement.stmv_arti_code
    GROUP BY article.arti_code
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT MAX(stock_mouvement.stmv_dt_mvt) 
    FROM stock_mouvement
    WHERE article.arti_code = stock_mouvement.stmv_arti_code
    parce que tu as un code de l'article unique là.

  5. #5
    Membre du Club
    Homme Profil pro
    Cadre
    Inscrit en
    Septembre 2013
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Cadre
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2013
    Messages : 83
    Points : 65
    Points
    65
    Par défaut
    Bonjour danvoiculet

    aucun changement; j'ai toujours autant de ligne qu'il y a de ref dans la colonne qté.

  6. #6
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 786
    Points
    30 786
    Par défaut
    Pourquoi aurais-tu moins de ligne puisque tu n'opères pas de restriction sur cette "date la plus récente" ?

    Voici une solution (il y en a d'autres) à ton problème, préparée à partir de la requête dans ton premier message :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    SELECT  art.arti_code           "Art"
        ,   art.arti_designation    "désign"
        ,   art.arti_qte_stock_ue   "En stock"
        ,   art.arti_stock_minimum  "seuil"
        ,   cla.clar_clnt_code      "Client"
        ,   stm.stmv_dt_mvt         "Dt mvt"
        ,   stm.stmv_qte_ue         "Qté"
        ,   stm.stmv_numero         "N°"
    FROM    article         art
        INNER JOIN
            client_article  cla
            ON  cla.clar_arti_code = art.arti_code
        INNER JOIN
            stock_mouvement stm
            ON  art.arti_code = stm.stmv_arti_code
    WHERE   art.arti_gestion_source = 'F'
        AND art.arti_code IN ('903548', '903547')
        AND EXISTS
            (   SELECT  NULL
                FROM    stock_mouvement sel
                WHERE   stm.stmv_arti_code  = sel.stmv_arti_code
                HAVING  stm.stmv_dt_mvt     = MAX(sel.stmv_dt_mvt)
            )
    ORDER BY art.arti_code
        ,   stm.stmv_numero DESC
    ;
    Tu remarqueras que :
    J'utilise la syntaxe normalisée pour les jointures, ce qui me permet de séparer les conditions de jointures des conditions de restriction;
    Je place des alias sur les tables utilisées dans la requête, d'une part pour en alléger l'écriture, d'autre part parce que j'utilise deux fois la même table dans la requête;
    J'ai simplement ajouté une condition dans la clause WHERE pour effectuer la sélection de la date la plus récente.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  7. #7
    Membre du Club
    Homme Profil pro
    Cadre
    Inscrit en
    Septembre 2013
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Cadre
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2013
    Messages : 83
    Points : 65
    Points
    65
    Par défaut
    Merci beaucoup pour toutes ces explications. La méthodologie est claire.

    Merci

Discussions similaires

  1. Récupérer la 2ème plus grande valeur dans une variable
    Par lyonnaisdu26 dans le forum QlikView
    Réponses: 3
    Dernier message: 12/03/2012, 13h58
  2. recupérer la plus grande valeur dans une bdd
    Par djo007 dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 30/01/2012, 21h15
  3. cherche la plus grande valeur dans une matrice
    Par thtghgh dans le forum MATLAB
    Réponses: 9
    Dernier message: 28/12/2009, 19h35
  4. VBA_E : Selection des 5 plus grandes valeurs d'une colonne..
    Par VBBBA dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/09/2006, 17h39
  5. vba-Excel-Plus grande valeur d'une colonne
    Par VBBBA dans le forum Macros et VBA Excel
    Réponses: 33
    Dernier message: 08/08/2006, 10h50

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