这个题目是数据库关联式代数里面的非基本运算中的除法运算。
非基本运算的意思是可以用(其他)基本运算求出来。
一个(非基本)除法运算,必须用到基本运算的差集运算两次(外加join 等运算)才能
表达。
(两次)差集运算,在SQL语法就用到 not exist (两次), 这就是楼主说的 负负得正
(负两次)。
用 count 不保证一定会得到解。
用not exist两次虽麻烦但是是正道。
※ 引述《gn01398532 (GOA)》之铭言:
: 此题已有人问过,但我还是不解要如何构筑此两层巢状查询
: Q1:列出参与所有专案的供应商名称?
: 题目所给表格:https://imgur.com/FqDfBeX
: 解法是用:不存在任何专案是没有参与的
: 解答就像此网站的解析:https://goo.gl/fZwjDj
: 巢状查询是要视为FROM后面的表格一起看吗?
: 为何第二个FROM后面是专案,最后一个FROM是看专案供应零件?
: 如果我先从最内层解析,
: 最后一个WHERE的条件是连结到两个更外层查询的表格(供应商和专案)
: 就代表我得同时看到最外层的 供应商.专案.专案供应零件 的表格
: 我的问题点在于要如何一步一步建立多层的巢状查询,
: 由内向外、由外向内,或是同时?
: 这种巢状查询要怎么练习呢?
: