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
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.
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
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) )
Merci beaucoup si vous pouvez m'aider
Partager