我们假设我们在数据库中有以下关系:
likes(moviefanname, movietitle)
将粉丝与他们喜欢的电影联系在一起,关键是两个人的组合。假设moviefanname和movietitle都是字符串
shows(cinema, movietitle, ticketprice)
表示每个电影放映的电影和费用。它的关键是前两个属性的组合。假设cinema是一个字符串,ticketprice是一个整数。
我想找到至少有一部电影的电影院,费用低于8美元,这是Fred喜欢的。
我创建的查询如下:
select cinema
from (
select *
from (
select tmp1.movietitle
from likes tmp1, shows tmp2
where moviefanname = 'Fred' and tmp1.movietitle = tmp2.movietitle) as foo
where ticketprice < 8) as foo2) as foo3
首先,我加入了2个关于他们共同属性的表格,将moviefanname限制为&#34; Fred&#34;。然后我只保留了价格为8或更低的元组,最后我做了一个投影,只保留那些电影院的名字。我试图在pgadmin SQL编辑器中执行它没有运气,因为它显示错误,第8行的列ticketprice不存在。所以,我想问一下逻辑是否正确,我很乐意了解为什么会出现这个错误。
答案 0 :(得分:2)
尝试
select distinct cinema
from likes
inner join shows on
likes.movietitle = shows.movietitle
where (moviefanname = 'Fred') and (ticketprice < 8)