取出这样一些供应商代号,它们能够提供至少一种由红色零件的供应商提供的零件

(16)取出这样一些供应商代号,它们能够提供至少一种由红色零件的供应商提供的零件
select sno from spj,p where spj.pno=p.pno and p.color=‘红’ group by sno
想问一下这个可以用not exists表达出来吗,两个not exists嵌套查询

该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
是的,您可以使用NOT EXISTS子查询来实现查询至少有一个由红色零件的供应商提供的零件的供应商代号。以下是使用两个嵌套的NOT EXISTS子查询的查询语句:

SELECT DISTINCT s.sno
FROM   S s
WHERE  NOT EXISTS (SELECT *
                   FROM   SPJ spj
                          JOIN P p
                            ON spj.pno = p.pno
                   WHERE  p.color = '红'
                          AND spj.sno = s.sno)
       AND NOT EXISTS (SELECT *
                       FROM   SPJ spj
                              JOIN P p
                                ON spj.pno = p.pno
                       WHERE  p.color = '红'
                              AND spj.sno NOT IN (SELECT spj2.sno
                                                  FROM   SPJ spj2
                                                         JOIN P p2
                                                           ON spj2.pno = p2.pno
                                                  WHERE  p2.color = '红'));

该查询首先使用第一个NOT EXISTS子查询来排除掉提供红色零件的供应商。然后,使用第二个NOT EXISTS子查询来排除掉没有提供由红色零件供应商提供的零件的供应商。最终查询结果将包含至少一个由红色零件的供应商提供的零件的供应商代号。


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^