Bonjour,
je me présente, je suis développeur asp.net avec une petite expérience en SQL avec Oracle et SqlServer.
Cela fait des années que je me débrouille en consultant les forums et blogs, mais là je peine vraiment.
Je viens donc vous demander votre aide.
J'ai une table stock :
et une table commande :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 create table stock ( produit nvarchar(30), quantite int) insert into stock values ('produit_a', 20) insert into stock values ('produit_b', 30) insert into stock values ('produit_c', 40)
je dois afficher un état de ces commandes, avec un indicateur permettant de savoir si pour chaque commande, il y a suffisamment de stock.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 create table commande ( id_commande int, produit nvarchar(30), quantite int) insert into commande (1, 'produit_a', 10) insert into commande (1, 'produit_b', 10) insert into commande (1, 'produit_c', 10) insert into commande (2, 'produit_a', 10) insert into commande (2, 'produit_b', 30) insert into commande (3, 'produit_a', 10)
MAIS je dois tenir compte de l'ordre des commandes !
Ainsi ici ma commande 1 sera OK, il y a suffisamment de stock.
Par contre pour ma commande 2, le produit B sera en rupture, car aux 30 en stock, il faut soustraire les 10 dans la commande 1.
Je cherche à savoir si il est possible d'établir une requête me permettant d'obtenir ce résultat :
commande / produit / valide
1 / produit_a / ok
1 / produit_b / ok
1 / produit_c / ok
2 / produit_a / ok
2 / produit_b / nok
3 / produit_a / nok
le but étant d'avoir comme résultat final (mais cela je saurait l'obtenir si j'ai le résultat au dessus) :
commande / valide
1 / ok
2 / nok
3 / nok
Avez-vous une idée ? Quelque chose à base de 2 CTE dont l'une se réfère à l'autre peut-être ?
Partager