小弟之前有问过关于SQL not exists观念问题,可能说明的不清楚,所以没得到答案
not exists观念我还不是非常清楚,如有蠢问题请见谅.
Q1. 列出所有没有销售黑色零件的供应商名称
以下是会用到的表格
书上给的答案为:
这个我可以理解,因为透过子查询,可以将零件表格连接到对应的专案供应代号表格
让专案供应代号表格可以有零件的资讯.
除此之外,子查询里可以透过外层表格(供应商)里的供应商代号来判断哪些供应商有提供
黑色零件
但是,以下题目为高考题目,却不需要外层表格的资讯来判断
子查询没用到外面的表格字段,"那他怎么判断王小明是不是有修那些课程" ?
在子查询里,student会和select结合而得到那些学生修了那些课程且找出王小明这个学生
所以如果有王小明这个学生,course每次到内层都不会是empty阿
所以变成是"如果有王小明这个学生就不印出课程资讯"
因此,需要改写成以下才是正确答案
不知道以上是否有误?
Q2. 关于在找"所有"的查询里不知道是否能改成只有一个not exists
例如: 列出参与所有专案的供应商名称
我的SQL语法如下,不知道是否正确? 或是考试这样写OK?
外层有供应商和专案的所有可能组合,然后到子查询里找是否有不存在的组合
如果有,代表有供应商没参加某个专案
谢谢~