問題是'查找已發佈所有字段書籍的發佈者'。嵌套查詢和雙重否定
book(ISBN(PK), Publisher(FK))
field(Book(FK), field)
Publisher(name(PK))
我還沒有找到確切的辦法,一直在嘗試不同的方式,但沒有任何幫助。我問了這個問題,但答案是......不是最好的。答案我得到是 - 邏輯是要「找出版商那裏心不是一個領域,出版商處理不當出版了一本書about'-
問題是'查找已發佈所有字段書籍的發佈者'。嵌套查詢和雙重否定
book(ISBN(PK), Publisher(FK))
field(Book(FK), field)
Publisher(name(PK))
我還沒有找到確切的辦法,一直在嘗試不同的方式,但沒有任何幫助。我問了這個問題,但答案是......不是最好的。答案我得到是 - 邏輯是要「找出版商那裏心不是一個領域,出版商處理不當出版了一本書about'-
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;
我相信這會工作。
這個模式是不可靠的......爲什麼'Field'表與'Book'有'FOREIGN KEY'關係?這沒有任何意義。用你提供的結構,你將如何確定*所有領域*實際上意味着什麼?你提到的邏輯是正確的,你需要檢查一個作者沒有出版過書籍的字段是否存在。*(提示:你可能需要一個WHERE NOT EXISTS或者一個OUTER JOIN'。)* – Siyual