2016-04-10 13 views
1

DVD Tablosuna (DVDID, Başlık, Hatalar) ve Kiralık Tablosuna (RentalID, ÜyeID, DVDID, DateRented) sahip bir Film İşletmesi Veri Tabanı var , DateReturned).Microsoft Access: Hatalı Filmleri ve halihazırda kiralanmış filmleri filtreleyin

Filmlerin kiralanabileceği şeyleri belirleyecek bir sorgu oluşturmak istiyorum. Bunu yapmak için, DVD tablosundaki DVD'leri ve Kiralama tablosunda iade edilmeyen DVD'leri hariç tutması gerekir. DVD tablosundaki 'Hata' sütununda içerik olduğunda DVD'lerin hatalı olduğu bilinir. Alan boşsa, DVD'de bir hata yok. DVD'ler, Kiralık Tablonun 'DateReturned' alanında içerik olduğunda iade edilir.

Şimdiye kadar DVD'leri hatalarla birlikte hariç tutmayı ve DVD'leri Kiralama masasında hariç tutmayı başardım, ancak bunun iyileştirilmesi gerekiyor, böylece yalnızca DateReturned alanı Boş ise Kiralık tablodaki DVD'leri hariç tutuyor.

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)); 

Bunu nasıl başarabileceğime dair herhangi bir fikrim var mı? Bu size kiralanan ancak henüz dönmedi olan DVD'leri göstermektedir varsayarsak

cevap

0

...

SELECT DVDID 
FROM Rental 
WHERE DateReturned Is Null; 

kullanın bir alt sorgu ve buna LEFT JOIN sizin DVD tablo olarak. WHERE madde için

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; 

, DVD.Faults Is Null arızaları olanlar hariç tutar ve sub.DVID Is Null kiralanan ve geri değil edilmiş olanlar hariç tutar.

+1

Cevabınız için teşekkür yığınları, mükemmel çalışıyor! – Crashbash111

İlgili konular