coisini002 2023-04-14 17:29 采纳率: 52.3%
浏览 23
已结题

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

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

  • 写回答

2条回答 默认 最新

  • Leodong. 2023-04-14 17:40
    关注

    该回答通过自己思路及引用到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子查询来排除掉没有提供由红色零件供应商提供的零件的供应商。最终查询结果将包含至少一个由红色零件的供应商提供的零件的供应商代号。


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

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月3日
  • 创建了问题 4月14日