sql - 这个 SQL 查询有问题吗
问题描述
我是 SQL 查询的新手,并试图更好地理解它。此 SQL 查询是否对下图有效?我收到的问题是:
“对于“斯蒂芬·金”撰写(或合着)的每本书,检索名称为“中央”的图书馆分馆拥有的书名和副本数
SELECT Title
FROM BOOK
WHERE BookID =
(
SELECT BookID
FROM BOOK_AUTHORS
WHERE AuthorName = 'Stephen King'
)
AND
BookID =
(
SELECT BookID, No_Of_Copies
FROM BOOK_COPIES
WHERE BranchID =
(
SELECT BranchID
FROM LIBRARY_BRANCH
WHERE BranchName = 'Central'
)
)
解决方案
请使用以下查询,但正确的方法是使用联接而不是多个子查询
加入
SELECT B.Title
FROM BOOK B
inner join BOOK_AUTHORS BA
on (B.bookid = ba.bookid)
inner join BOOK_COPIES BC
on (B.bookid = BC.bookid)
inner join LIBRARY_BRANCH LB
on (BC.branchid = LB.branchid)
where B.AuthorName = 'Stephen King'
and LB.BranchName = 'Central';
子查询
SELECT Title
FROM BOOK
WHERE BookID in
(
SELECT BookID
FROM BOOK_AUTHORS
WHERE AuthorName = 'Stephen King'
)
AND
BookID in
(
SELECT BookID
FROM BOOK_COPIES
WHERE BranchID in
(
SELECT BranchID
FROM LIBRARY_BRANCH
WHERE BranchName = 'Central'
)
);
推荐阅读
- android - 如何在 android Webview 中播放 html 音频,我需要简单的编码
- python-3.x - Matplotlib:地球绕太阳运行的动画
- php - 从 PHP 中的文本中删除最后一个 URL 链接的表达式
- forms - Tableau - 使用不同变量的 KPI(表单)
- python - 打开 Django 服务器时出现循环导入错误
- java - 带空格的凯撒密码解密方法
- python - 通过聚合每个桶中的不均匀元素进行批处理?
- git - 在 git add 之后,为什么文件被“重命名”?
- react-native - React Native Autocomplete Input 结果列表忽略触摸
- php - 为什么这个 Sylius 资源 API 要求提供模板?