Poe*_*ena 1 sql oracle oracle11g oracle-sqldeveloper
好的,所以我正在做一些SQL修订,我应该做一个查询"使用连接而不是使用子查询,列出发布心理学书籍的出版商." 并想出了这个:
SELECT DISTINCT p.pub_name, t.category
FROM publishers p
INNER JOIN titles t
ON p.pub_id=t.pub_id
WHERE t.category='psychology';
Run Code Online (Sandbox Code Playgroud)
接下来的部分是使用子查询来完成它但是我不确定如果不在子查询本身中使用连接,你将如何做到这一点?另外我如何打印每一位作者?
该链接是数据库的pastebin.
这是架构(我知道关于折扣表的架构问题,而不是我的架构).

您可以使用IN子句:
SELECT
p.pub_name
FROM
publishers p
WHERE
p.pub_id IN (SELECT pub_id FROM titles t WHERE t.category = 'psychology)
Run Code Online (Sandbox Code Playgroud)
或者,EXISTS子句稍微复杂但通常表现更好:
SELECT
p.pub_name
FROM
publishers p
WHERE
EXISTS (SELECT 1 FROM titles t WHERE t.pub_id = p.pub_id AND t.category = 'psychology)
Run Code Online (Sandbox Code Playgroud)
获得每一位作者:
SELECT
a.au_fname,
a.au_lname
FROM
publishers p
JOIN
titles t ON t.pub_id = p.pub_id
JOIN
title_author ta ON ta.title_id = t.title_id
JOIN
authors a ON a.au_id = ta.au_id
WHERE
t.category = 'psychology'
AND a.au_ord = 2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
44 次 |
| 最近记录: |