Aide pour une requete SQL
Bonjour j'aurais besoin d'aide pour une requete sql. Cela consiste en une bibliothèque et il faudrait que je mette a jour la date de retour d'un livre car la base a été corrompu donc impossible de connaitre la date exacte donc mettre celle-ci a GETDATE() mais le probleme est celui c: si j'amais un livre a été loué 5 fois et quil est encore loué en ce moment il faut mettre à jour tout ceux qui on été loué avant la derniere location voici le code des tables en bas de la page.
liv_disp à 0 signifie libre et 1 signifie non disponible.
Donc d'apres ces table je doit mettre à jour la date de retour jai penser a cette instruction update
Code:
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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
UPDATE Emprunt
SET emp_DateRetour = GETDATE()
WHERE PKemp_NoLivre IN
(SELECT PKliv_No FROM Livre WHERE liv_Disp = 0)
OR PKemp_Date < (SELECT MAX(PKemp_Date)
FROM Emprunt
WHERE PKemp_NoLivre=
(SELECT PKliv_No
FROM Livre
WHERE liv_Disp = 1
AND PKemp_NoLivre = PKliv_No))
CREATE TABLE Emprunt
(
PKemp_NoLivre INT
NOT NULL
REFERENCES Livre (PKliv_No),
PKemp_NoLecteur INT
NOT NULL
REFERENCES Lecteur (PKlec_No),
PKemp_Date DATETIME
NOT NULL
DEFAULT GETDATE(),
emp_DateRetour DATETIME
NULL,
CONSTRAINT PK_Emprunt PRIMARY KEY
(PKemp_NoLivre, PKemp_NoLecteur, PKemp_Date)
)
CREATE TABLE Livre
(
PKliv_No INT
PRIMARY KEY
NOT NULL,
liv_Titre VARCHAR(60)
NOT NULL
DEFAULT '',
liv_Page SMALLINT
NOT NULL
DEFAULT 0,
liv_Prix SMALLMONEY
NOT NULL
DEFAULT 0,
liv_Disp BIT
NOT NULL
DEFAULT 0,
FKliv_NoEditeur CHAR(3)
NOT NULL
REFERENCES Editeur (PKedi_No)
) |
Mais cela ne foncionne pas il met a jour tout les emprunt car il trouve seulement une date max alors que moi je voudrait qu'il compare la date de lemprunt à tout les date maximum de chaque livre.
Merci beaucoup si vous pouvez m'aider