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 :

Requête qui retourne la valeur la plus haute en fonction d'une condition [11gR2]


Sujet :

SQL Oracle

  1. #1
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Septembre 2017
    Messages : 22
    Points : 20
    Points
    20
    Par défaut Requête qui retourne la valeur la plus haute en fonction d'une condition
    Bonjour à tous,

    je bloque sur une requête qui me semble toute simple à l'esprit mais que je n'arrive pas à retranscrire :

    j'ai des articles dans une table dispo qui indique les quantités sur deux dépôt différents :

    dépôt, code_article, quantité_dispo

    j'ai besoin de retourné la liste de chaque aritcle du dépôt_2 lorsque la quantité de l’article est supérieur à celle qui est dans le dépôt_1


    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     select code_article
    from dispo
    where 
    quantité in depot_4 > quantité in depot_1

    peu être un case ou un union mais je ne vois pas vu que les infos sont sur la même table .

    j'ai aussi essayé ceci mais j'ai un message qui me dit que ma sous-requette renvoit plusieurs enrengistrement

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     select 
    code_article
    FROM 
    DISPO
    WHERE 
    dépôt = 'depot_1'
    and quantité < (
    select 
    quantité
    FROM 
    DISPO
    WHERE 
    dépôt = 'depot_4')

    donc pour l'instant je bloque ...

    si quelqu'un peut m'aider svp

    Merci

  2. #2
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Bonjour,
    QQchose comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    WITH d1
            AS (SELECT code_article, quantité_dispo
                  FROM dispo
                 WHERE depot = 1)
       , d2
            AS (SELECT code_article, quantité_dispo
                  FROM dispo
                 WHERE depot = 2)
    SELECT *
      FROM (SELECT a.code_article, a.quantité_dispo q_depot_2, b.quantité_dispo q_depot_1
              FROM d2 a, d1 b
             WHERE a.code_article = b.code_article(+))
     WHERE (q_depot_2 > q_depot_1) OR (q_depot_2 IS NOT NULL AND q_depot_1 IS NULL)
    ?
    Sans pouvoir tester, car pas de jeu de données ...

    @+
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

  3. #3
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 049
    Points : 9 384
    Points
    9 384
    Par défaut
    Quasiment comme Sunchaser, mais un niveau de parenthèses en moins :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    WITH d1
            AS (SELECT code_article, quantité_dispo
                  FROM dispo
                 WHERE depot = 1)
       , d2
            AS (SELECT code_article, quantité_dispo
                  FROM dispo
                 WHERE depot = 2)
     SELECT a.code_article, a.quantité_dispo q_depot_2, b.quantité_dispo q_depot_1
              FROM d2 a, d1 b
             WHERE a.code_article = b.code_article(+)
             AND     a.quantité_dispo > nvl ( b.quantité_dispo,0)
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Septembre 2017
    Messages : 22
    Points : 20
    Points
    20
    Par défaut
    Merci pour vos réponse, les deux solutions fonctionnent

    bonne fin de journée

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/02/2017, 17h46
  2. Sous-requête qui retourne les mêmes valeurs
    Par messi1987 dans le forum Développement
    Réponses: 5
    Dernier message: 23/09/2014, 19h22
  3. Fonction qui retourne plusieurs valeurs !
    Par casafa dans le forum C++
    Réponses: 20
    Dernier message: 23/04/2014, 16h56
  4. Requête qui renvoie les valeurs les plus souvent affichés
    Par athos7776 dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 25/07/2007, 17h54
  5. [PL/SQL] Fonction qui retourne plusieurs valeurs
    Par Loko dans le forum Oracle
    Réponses: 2
    Dernier message: 07/12/2004, 09h43

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