这是我正在使用的数据库:https://drive.google.com/file/d/1arjekoqpal0jfir1h3nxycfvngncnuxg/view?usp=sharing
查找标题包含字符串“data”且至少有一位作者来自deptnum 100部门的论文。列出这些论文的篇幅和标题。必须使用exists运算符。确保查询不区分大小写。
我不知道如何输出每个学术论文的总数。
我对这个问题的尝试是:
SELECT panum, title
FROM department NATURAL JOIN paper
WHERE UPPER(title) LIKE ('%data%') AND EXISTS (SELECT deptnum FROM
department WHERE deptnum = 100);
这似乎是空的。我不确定我做错了什么,喜欢和存在能结合起来吗?
谢谢您。
4条答案
按热度按时间deikduxw1#
不要使用
natural join
! 这是一个令人厌恶的,因为它不使用显式声明的外键关系。明确列出您的join
键,因此查询更易于理解和维护。也就是说,您的子查询就是问题所在。我希望查询更像这样:
fnvucqvd2#
短语
UPPER(title) LIKE ('%data%')
永远不会找到任何行,因为标题中任何内容的大写版本都不会包含小写字母data
.bpsygsoo3#
jdzmm42g4#
因为他们需要
EXISTS
,运算符需要应用于author
,不是department
table。内部查询EXISTS
需要与对论文的查询相关联,因此不应该存在JOIN
在顶层:注意,自从
author
表缺少DEPTNUM
,您确实需要在EXISTS
查询以引入一行academic
因为它DEPTNUM
列。