关联rental与film表查询影片标题返回空列的问题求助
问题排查与解决方案
核心问题:关联条件逻辑错误
rental.last_update = film.last_update这个关联方式完全不符合业务逻辑。rental表的last_update是租赁订单记录的更新时间,film表的last_update是影片基础信息(如标题、分类)的更新时间,两者语义毫无关联,几乎不存在相等的情况,这直接导致内连接后没有匹配数据,返回空结果。正确的表关联逻辑
在标准的DVD租赁数据库(如Sakila示例库)中,表之间的关联关系需要通过业务外键实现:
rental表通过inventory_id关联inventory表,inventory表再通过film_id关联film表。修正后的SQL语句如下:
SELECT film.title FROM rental INNER JOIN inventory ON rental.inventory_id = inventory.inventory_id INNER JOIN film ON inventory.film_id = film.film_id WHERE return_date BETWEEN '2005-05-29' AND '2005-05-30'
- 验证步骤
- 先确认rental表在指定日期范围内有数据:
SELECT COUNT(*) FROM rental WHERE return_date BETWEEN '2005-05-29' AND '2005-05-30'; - 检查inventory表的
inventory_id是否与rental表的对应字段存在匹配记录,film表的film_id是否与inventory表的对应字段存在匹配记录,确保外键关联关系正常。
内容的提问来源于stack exchange,提问作者Nora
相关产品推荐
相关产品推荐

