Sql 找到最便宜的商店,其中有所有要求的清单项目

Sql 找到最便宜的商店,其中有所有要求的清单项目,sql,Sql,我目前正在尝试使用纯T-SQL,而不需要使用C来寻找与产品列表匹配的最便宜的商店 找到最便宜的匹配项效果很好,但我的问题是,商店中找到的匹配项不一定包含列表中的所有项 此操作所需的表格包括: 超市-所有可用的超市。 ListItems-连接项目列表和产品的表。 AvailProducts-链接产品和超市的表格。如果某个产品ID和超市ID的行不存在,则表示超市根本没有该产品。这是保存产品价格的表格 我当前的测试SQL语句应该返回多达5家超市,这些超市从最便宜的商品到最昂贵的商品,看起来如下所示:

我目前正在尝试使用纯T-SQL,而不需要使用C来寻找与产品列表匹配的最便宜的商店

找到最便宜的匹配项效果很好,但我的问题是,商店中找到的匹配项不一定包含列表中的所有项

此操作所需的表格包括: 超市-所有可用的超市。 ListItems-连接项目列表和产品的表。 AvailProducts-链接产品和超市的表格。如果某个产品ID和超市ID的行不存在,则表示超市根本没有该产品。这是保存产品价格的表格

我当前的测试SQL语句应该返回多达5家超市,这些超市从最便宜的商品到最昂贵的商品,看起来如下所示:

SELECT TOP 5 AvailProducts.[SuperID], SUM(AvailProducts.[Price]) AS "Price" 
FROM AvailProducts, ListItems, Supermarkets 
WHERE ListItems.[ListID]=3 
AND AvailProducts.[ProductID]=ListItems.[ProductID] 
AND AvailProducts.[SuperID]=Supermarkets.[ID] 
AND (SELECT COUNT(*) FROM AvailProducts, ListItems WHERE AvailProducts.[ProductID]=ListItems.[ProductID] AND ListItems.[ListID]=3 AND AvailProducts.[SuperID]=)=(SELECT COUNT(*) FROM ListItems WHERE [ListID]=3)  
GROUP BY AvailProducts.[SuperID] 
ORDER BY SUM(AvailProducts.[Price])
从底部开始的第三行应该计算超市中可用的列表项的数量,并且仅当列表项的数量与超市中可用的项目数量相等时才返回超市的ID


但是,这不起作用,因为我无法在此语句中指定当前超市的ID。

请尝试使用子句。在Group BY子句add-HAVING countdistinct productId=从列表项中选择COUNT*,其中[ListID]=3已解决所有问题,谢谢!