db2 如何检查表A的一个条目是否包含表B的所有值

xwbd5t1u  于 2022-12-13  发布在  DB2
关注(0)|答案(1)|浏览(233)

我想知道是否有一种适当的方法来检查一个条目是否包含另一个表的所有值。
该练习描述如下:
获取市场编号MNUM,该市场至少供应有c1中的所有蔬菜。
This is the table containing all the deliveries.
这里我得到了c1提供的所有蔬菜。
All Vegetables supplied by c1

SELECT 
    VNUM
FROM
    CVM
WHERE 
    CNUM = 'c1'
GROUP BY 
    VNUM;

但我真的不知道我怎么能检查,如果m1例如,提供了所有这些...
提前感谢您!
结果应该是:

MNUM
--------
m2

因为m2由v1、v2、v9供电

apeeds0o

apeeds0o1#

首先,获取c1提供的所有蔬菜编号。然后从表中选择包含这些蔬菜的所有行。现在进行聚合。按市场编号分组,看看是否得到了市场的完整蔬菜编号。

WITH c1_vnums AS
(
  SELECT vnum
  FROM cvm
  WHERE cnum = 'c1'
)
SELECT mnum
FROM cvm
WHERE vnum IN (SELECT vnum FROM c1_vnums)
GROUP BY mnum
HAVING COUNT(DISTINCT vnum) = (SELECT COUNT(DISTINCT vnum) FROM c1_vnums)
ORDER BY mnum;

相关问题