SQL query to display names of customers who have purchased all the DVD
You can try something like:

select c.Customer_Name
from Customer c
join (  select Customer_No
        from DVD_Purchase
        group by Customer_No
        having count(distinct DVD_No) = (select count(*) from DVD)
        ) d on c.Customer_No = d.Customer_No


Explaination: first we need to know the number of DVDs available.

select count(*) 
from DVD


Then we need to get the number of distinct DVDs purchased by the customers, and to compare it with the total we got previously.

select Customer_No
from DVD_Purchase
group by Customer_No
having count(distinct DVD_No) = &lt;number of DVDs available&gt;


And finally, we just need to join with customers table to retrieve the names.