嵌套查询和双重否定

时间:2016-11-03 19:38:47

标签: sql oracle

问题是'查找已发布所有字段图书的发布商。'

book(ISBN(PK), Publisher(FK))
field(Book(FK), field)
Publisher(name(PK))

我无法确切地知道该做什么,并且一直在尝试不同的方式,但没有任何帮助。我问过它,但答案是......不是最好的。我给出的答案是 - 逻辑是找到出版商,其中没有出版商没有出版过关于' -

的书籍的字段。

1 个答案:

答案 0 :(得分:1)

with cnt as (select count(distinct field) c from field)
select b.Publisher 
  from book b 
  inner join field f on (b.ISBN=f.Book) 
  inner join cnt on (1=1) 
group by b.Publisher, cnt.c 
having count(distinct field) = cnt.c;

我相信这会奏效。