Bonjour, j'ai un problème avec une requête SQL que j'ai du mal à résoudre.
Ma requête est censé rendre le nombre d'exemplaires disponibles d'un livre.
Pour cela je fais appel à un calcul du nombre d'exemplaires existants, et à un calcul du nombre d'exmplaires disponibles (qui est en fait une soustraction entre le nombre d'exemplaires existants d'un livre, et le nombre d'exemplaire emprunté d'un livre).
Un livre est emprunté quand il est présent dans la table ExemplaireEmprunte et quand il est affecté de la valeur 1 pour EtatEmprunte dans la table Exemplaire.
Le résultat fourni est négatif et n'est donc pas correct.
Si vous pouviez m'aider à reformuler ma requête pour qu'elle fonctionne. Ca me serait très utile.
Merci
Structures de mes tables :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT count(Livre.ISBN)as NbExistants, count(Livre.ISBN) - (SELECT count(Livre.ISBN) FROM Livre, Exemplaire, ExemplaireEmprunte WHERE (Livre.ISBN = Exemplaire.ISBN) AND (NumeroInventaire= NumeroInvent)) as NbDispo, Livre.ISBN, Livre.Titre FROM Livre, Exemplaire WHERE (Livre.ISBN = Exemplaire.ISBN) Group by Livre.ISBN, Livre.Titre;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Create table Exemplaire ( NumeroInventaire int PRIMARY KEY, ISBN varchar(15), EtatEmprunte int default(0), constraint FKExemplaire foreign key (ISBN) references Livre(ISBN) deferrable initially deferred, constraint CBoolean CHECK (EtatEmprunte between 0 AND 1) );
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Create table Emprunt ( NAdherent int, DateEmprunt Date, DateRetour Date, constraint PK_Emprunt primary key (NAdherent, DateEmprunt) ); alter table Emprunt add constraint FK_Emprunt foreign key (NAdherent) references Adherent(AdherentNumero);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Create table ExemplaireEmprunte ( NumeroInvent int, AdherentNumero int, DateEmprunt date ); ALTER table ExemplaireEmprunte ADD constraint FKExemplaireEmprunte1 foreign key (NumeroInvent) references Exemplaire(NumeroInventaire); ALTER table ExemplaireEmprunte ADD constraint FKExemplaireEmprunte2 foreign key (AdherentNumero, DateEmprunt) references Emprunt(NAdherent, DateEmprunt);
Partager