2016-04-10 4 views
1

J'ai une base de données pour une entreprise de film qui a une table de DVD (DVDID, titre, défauts) et une table de location (RentalID, MemberID, DVDID, DateRented , DateReturned).Microsoft Access: filtrer les films avec des défauts, et les films déjà loués

Je veux faire une requête qui permettra de déterminer quels films sont disponibles à la location. Pour ce faire, il doit exclure les DVD contenant des erreurs dans la table DVD et les DVD qui n'ont pas été renvoyés dans la table Location.

Les DVD sont connus pour avoir un problème quand il y a du contenu dans la colonne 'Fault' de la table DVD. Si le champ est vide, le DVD n'a pas de défaut. Les DVD sont connus pour être renvoyés lorsqu'il y a du contenu dans le champ 'DateReturned' de la table Rental. Jusqu'à présent, j'ai réussi à exclure les DVD avec des fautes et à exclure les DVD de la table Rental, mais cela doit être amélioré afin d'exclure uniquement les DVD de la table Rental si le champ DateReturned est Null.

SELECT DVD.DVDID, DVD.Title, DVD.Rating, DVD.Genre, DVD.Released, DVD.RentalPeriod, DVD.Distributor, DVD.Faults 
FROM DVD 
WHERE (((DVD.Faults) Is Null) AND ((Exists (SELECT 1 FROM Rental WHERE Rental.DVDID = DVD.DVDID))=False)); 

Quelqu'un at-il des idées sur comment je pourrais accomplir cela?

Répondre

0

En supposant que cela vous montre les DVD qui ont été loués, mais pas encore de retour ...

SELECT DVDID 
FROM Rental 
WHERE DateReturned Is Null; 

utiliser comme un sous-requête et LEFT JOIN votre table DVD à elle.

SELECT 
    DVD.DVDID, 
    DVD.Title, 
    DVD.Rating, 
    DVD.Genre, 
    DVD.Released, 
    DVD.RentalPeriod, 
    DVD.Distributor, 
    DVD.Faults 
FROM 
    DVD 
    LEFT JOIN 
     (
      SELECT DVDID 
      FROM Rental 
      WHERE DateReturned Is Null 
     ) AS sub 
     ON DVD.DVID = sub.DVID 
WHERE 
     DVD.Faults Is Null 
    AND sub.DVID Is Null; 

Dans la clause WHERE, DVD.Faults Is Null exclut ceux qui ont des défauts, et sub.DVID Is Null exclut ceux qui ont été loués et non retournés.

+1

Merci beaucoup pour la réponse, fonctionne parfaitement! – Crashbash111