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

PL/SQL Oracle Discussion :

Commandes non encore totalement livrées


Sujet :

PL/SQL Oracle

  1. #1
    Futur Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 10
    Points : 8
    Points
    8
    Par défaut Commandes non encore totalement livrées
    Bonsoir!

    J'aimerai connaitre la requete sql (ou PL/SQL) qui permet de faire le listing des commandes non encore totalement livrées ( en sachant qu'on peut faire des livraisons partielles des lignes de commandes seulement si la quantitée totale de la ligne de commande est disponible en stock)


    les tables requis sont :

    lignecommande( #ref_cmd, #ref_prod, qte_cdee)
    commande( #ref_cmd, date_cmd, ref_clt, ref_ag)
    lignelivraison( #ref_liv, #ref_prod, qte_liv)
    livraison( #ref_liv, date_liv, ref_cmd)



    Merci d'avance

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 103
    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 103
    Points : 28 398
    Points
    28 398
    Par défaut
    Présente nous la requête que tu as commencé... Nous t'aiderons à la faire évoluer.

  3. #3
    Futur Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    en fait, j'ai procedé comme suit : pour chaque commande, voir si toutes ses lignes de commande sont transformées en des lignes de livraison.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    select ref_cmd, ref_prod
    from lignecommande
    where not in 
    ( select ref_prod, ref_cmd
    from lignelivraison, livraison
    where lignelivraison.ref_liv=livraison.ref_liv)
    je sais pas s'il faut faire une boucle apres pour toutes les occurences de la tables commandes, pour avoir toutes les commandes non encore totalement livrées.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 280
    Points : 344
    Points
    344
    Par défaut
    Salut,
    Puisque tu fais reference a PL/SQL je suppose que tu tournes sous oracle.
    Alors par etapes:

    1. Recherche de toutes les commandes livrees
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    WITH 
    	FLT_LIV AS (
    		SELECT a.ref_cmd, b.ref_prod, b.qte_liv
    		FROM livraison a
    		JOIN lignelivraison b ON ( a.ref_liv = b.ref_liv)
    		)
    SELECT * FROM FLT_LIV;
    2. Cumul des quantites livrees vu que ta structure sous-entend de multiple envois pour un meme couple (ref_cmd,ref_prod)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    WITH 
    	FLT_LIV AS (
    		SELECT a.ref_cmd, b.ref_prod, b.qte_liv
    		FROM livraison a
    		JOIN lignelivraison b ON ( a.ref_liv = b.ref_liv)
    		),
    	FLT_LIV_CUMUL AS (
    		SELECT ref_cmd, ref_prod, sum(qte_liv) qte_liv
    		FROM FLT_LIV
    		GROUP BY ref_cmd, ref_prod
    		)
    SELECT * FROM FLT_LIV_CUMUL;
    3. Etat des commandes total
    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
    WITH 
    	FLT_LIV AS (
    		SELECT a.ref_cmd, b.ref_prod, b.qte_liv
    		FROM livraison a
    		JOIN lignelivraison b ON ( a.ref_liv = b.ref_liv)
    		),
    	FLT_LIV_CUMUL AS (
    		SELECT ref_cmd, ref_prod, sum(qte_liv) qte_liv
    		FROM FLT_LIV
    		GROUP BY ref_cmd, ref_prod
    		),
    	FLT_CDE_ETAT AS (
    		SELECT a.ref_cmd, a.ref_prod, a.qte_cdee, nvl(b.qte_liv,0) qte_liv
    		FROM lignecommande a
    		LEFT JOIN FLT_LIV_CUMUL b ON ( a.ref_cmd = b.ref_cmd AND a.ref_prod = b.ref_prod)
    		)
    SELECT * FROM FLT_CDE_ETAT;
    4. Etat des commandes non totalement livre
    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
    WITH 
    	FLT_LIV AS (
    		SELECT a.ref_cmd, b.ref_prod, b.qte_liv
    		FROM livraison a
    		JOIN lignelivraison b ON ( a.ref_liv = b.ref_liv)
    		),
    	FLT_LIV_CUMUL AS (
    		SELECT ref_cmd, ref_prod, sum(qte_liv) qte_liv
    		FROM FLT_LIV
    		GROUP BY ref_cmd, ref_prod
    		),
    	FLT_CDE_ETAT AS (
    		SELECT a.ref_cmd, a.ref_prod, a.qte_cdee, nvl(b.qte_liv,0) qte_liv
    		FROM lignecommande a
    		LEFT JOIN FLT_LIV_CUMUL b ON ( a.ref_cmd = b.ref_cmd AND a.ref_prod = b.ref_prod)
    		)
    SELECT * 
    FROM FLT_CDE_ETAT
    WHERE qte_cdee<>qte_liv;
    ---
    Farid

Discussions similaires

  1. commande non encore validé
    Par fatjoe dans le forum 1&1
    Réponses: 1
    Dernier message: 07/08/2008, 08h20
  2. Commandes non reconnues.
    Par Manu' dans le forum Administration système
    Réponses: 3
    Dernier message: 07/10/2004, 17h09

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