Besoin d'aide requête sql

Nikko -  
 Nikko -
Bonjour,

J'ai besoin d'effectuer une requête de type UPDATE pour pouvoir mettre à jour un stock. Je vous mets ici le MRD de ma base de données :

Produit(codep, nom, quantiteenstock, #codet)
Type(codet, libellé)
Réservation(numero, datedépart, dateretour, quantite, #codet, #codes)
Salarié(codes, nom, prenom)

Dans cette requête, je voudrais mettre à jour "quantiteenstock" de Produit en prenant la quantiteenstock actuelle + "quantité" de Réservation.

Exemple :

J'ai la réservation numéro 2 qui vient de se terminer. La quantité de matériel retourné est de 3. Il faut donc mettre à jour quantiteenstock qui vaut 18. Donc, la nouvelle valeur de quantiteenstock est de 18+3=21.

Je ne sais pas si j'ai été assez clair, demandez moi si vous voulez un éclaircissement. J'ai besoin d'aide svp.

Merci d'avance,
Nikko

20 réponses

SebManfred Messages postés 484 Statut Membre 128
 
comment fais-tu le lien entre tes produits et tes réservations? il te faudrait une clé étrangère dans réservation qui pointe vers produit.
à partir de là, c'est une requête d'update du genre
Update table Produit set quantite = (select produit1.quantite + reservation.quantite as quantite from produit1, reservation where produit1.codeP = produit.codeP and reservation.codeP = produit.codeP)
selon ton SGBD, cette requete peut marcher ou pas... mais l'esprit est là.
1
aryasse
 
sql c'est trés simple,il suffit de s'y mettre.ne chercher pas la solution mais apprenez ce language
0
Nikko
 
Peut-être que la réponse pourra m'aider dans l'apprentissage de ce langage que j'étudie en cours...
0
Nikko
 
Je te remercie beaucoup SebManfred. Je vais essayer de faire tout ça :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Nikko
 
Cependant, je ne comprends pas ta phrase lorsque tu dis : "comment fais-tu le lien entre tes produits et tes réservations? il te faudrait une clé étrangère dans réservation qui pointe vers produit. "

Je peux faire une jointure entre reservation et type et entre type et produit. Ainsi, la clé étrangère dont tu me parles n'a pas besoin d'être, si ?
0
SebManfred Messages postés 484 Statut Membre 128
 
sur quoi tu te base pour faire ta jointure? il te faut un point commun entre les 2, sinon ça ne marchera pas. (c'est le principe d'une clé étrangère)
0
Nikko
 
Je pensais faire la jointure suivante :
reservation.codet=type.codet and type.codet=produit.codet

Cette jointure est fausse ?
0
SebManfred Messages postés 484 Statut Membre 128
 
si je comprend bien, tu as une jointure 1-1 entre ta table produit et ta table type?
si c'est le cas, pourquoi faire 2 tables?
si ça n'est pas le cas, ta jointure ne marchera pas, car comment feras-tu pour identifier de manière unique tes produits sachant qu'il n'y a pas de contrainte d'unicité de ton champ codet dans ta table produit?
0
Nikko
 
table produit 1,1 ------------- 1,n table type

je dois faire 2 tables car les réservation ne se font pas en fonction des produits, mais en fonction des types de produits.

Contexte :
En fait, le projet de mon stage est une application qui va permettre de gérer les stocks. Mon tuteur veut donc des pages web où l'on puisse voir qu'il y a, par exemple, des ordinateurs disponibles (peu importe l'ordinateur) et mon tuteur choisi l'ordinateur qu'il donnera à la personne qui réserve. Donc la personne qui réserve se fiche de savoir quel ordi est disponible.
Mais je dois quand même faire une mise-à-jour du stock des ordinateurs, donc du stock de la classe produit.
0
SebManfred Messages postés 484 Statut Membre 128
 
le problème set qu'à priori une réservation correspond à un produit et non à un type, et que si tu te sers de ton type pour faire la jointure, tu vas ajouter une indétermination dans ta relation
donc je répète : il te manque une clé étrangère ou quelque chose pour faire le lien entre les produits et les réservations
0
Nikko
 
Donc, d'après ce que je prends, je devrais modifier ma table réservation pour y ajouter une clé étrangère "codeprod" qui fait référence au code de la table produit ?
0
SebManfred Messages postés 484 Statut Membre 128
 
sachant qu'on réserve un type, le produit de la réservation ne sera renseigné qu'à chaque fois que la réservation est attribuée. cependant, si tu fais ton calcul avec le codet, sachant que plusieurs produits peuvent avoir le même codet, si tu fais la somme du nombre de produits et de toutes les réservations qui ont ce type de produit, tu vas avori des résultats aberrants
par ex : 3 ordinateurs de réservés : 1 HP et 2 DELL, tu veux faire le compte des DELL sachant qu'il y en a 45 en magasin, tu fais la somme des DELL en magasin plus des réservations dont le TYPE correspond au type de tobn produit, c'est à dire ordinateur et non pas DELL, et tu te retrouves avec 48 DELL au lieu de 47
0
Nikko
 
C'est vrai que c'est aberrant, mais ce sont les consignes que j'ai reçu : La réservation se fait sur le type de produit. Mon tuteur gère ensuite le matériel qu'il donne aux personnes réservant le matériel.

Penses-tu que je puisse faire 2 requêtes : la première mémorise le nombre d'ordinateurs (ou autre produit) réservés et j'inclus le résultat de cette requête dans la 2e pour pouvoir l'ajouter au stock du produit ?

J'ai modifié ma bdd en rajoutant une clé étrangère dans la table réservation et j'ai testé la requête que tu m'as fourni plus haut et il me met un message d'erreur comme quoi la table 'produit1' n'existe pas dans ma base de données...
0
SebManfred Messages postés 484 Statut Membre 128
 
excuse moi, un petit oubli.
il faut mettre
from produit produit1, pour attribuer un nom de remplacement à ta table produit, pour la différencier de ta table produit que tu appelles dans la 1ere partie de ta requete
0
Nikko
 
Merci beacoup, j'essaye ça tout de suite !
0
Nikko
 
mysql ne veut plus se lancer :x
0
SebManfred Messages postés 484 Statut Membre 128
 
arrête les serveurs (apache compris) et relance tout
0
Nikko
 
J'ai pas de serveur apache lancé, j'ai reboot la machine, réinstallé et la configuration de mysql server ne passe pas, il plante au niveau du redémarrage de l'application... Je comprends pas, j'ai pas touché au pc depuis hier soir et ca marchait niquel hier...
0
SebManfred Messages postés 484 Statut Membre 128
 
mysql server? c'est soit mysql, soit sql server... et les 2 sont complètement différents.
c'est quoi ton SGBD?
0
Nikko
 
Mysql server 5.1
0