>My nephew asked for some help on a query and so far I can't seem to think of a good way to do it. Here is his question.
>
>A one-to-many relationship where the parent table is a list of customers and the child table is a list of things they've bought. It's easy enough to select customers who have bought a television. It's also simple to select customers who have bought a television or a couch. But how do I select customers who have bought both a television and a couch? The following is returning customers who have bought both or one of the items:
>
>
>I don't have data to test with and I was hoping someone could had an idea.
>
>Thanks
select Cust.CustomerId, Cust.CustomerName
from Customer Cust
inner join Sales S On Cust.CustomerId = S.CustomerId
where S.Product IN ('Product1', 'Product2')
GROUP BY Cust.CustomerID, Cust.CustomerName
HAVING MIN(S.Product) = 'Product1' and MAX(S.Product) = 'Product2'
This is solution for just two products.
See more details in this article
http://social.technet.microsoft.com/wiki/contents/articles/22165.t-sql-relational-division.aspx
If it's not broken, fix it until it is.
My Blog