我目前正在使用MS的Sakila DB,其中包含电影/演员/租赁/客户等方面的数据。
地图:
我被要求制定查询条件以查找尚未租借特定电影的客户。
我已经能够找出我的代码来找到租借电影的客户,但是我无法集中精力找到没有租借电影的客户。
我的代码如下:
SELECT DISTINCT C.customer_id, C.first_name, C.last_name
FROM customer AS C
JOIN RENTAL AS R ON C.customer_id = R.customer_id
JOIN inventory AS I ON R.inventory_id = I.inventory_id
JOIN film AS F ON I.film_id = F.film_id
WHERE F.title = 'ANGELS LIFE'
!= 'ANGELS LIFE'
但是,我可以使用该列表返回出租过其他电影的每个人的清单(包括从其他购买中租赁了ANGELS LIFE的电影)。
我无法制定下一步。我考虑过使用Union
然后删除重复项(count(*)> 1)吗?
感谢任何建议。
您可以使用dogregation:
SELECT C.customer_id, C.first_name, C.last_name
FROM customer AS C JOIN
RENTAL AS R
ON C.customer_id = R.customer_id JOIN
inventory AS I
ON R.inventory_id = I.inventory_id JOIN
film AS F
ON I.film_id = F.film_id
GROUP BY C.customer_id, C.first_name, C.last_name
HAVING SUM(CASE WHEN F.title = 'ANGELS LIFE' THEN 1 ELSE 0 END) = 0;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句