请求协助编写SQL查询:筛选生产至少两类产品的厂商信息
解决方案
首先我先基于你描述的ER图结构,假设各表的字段如下(如果你的实际字段名不同,直接替换即可):
manufacturer表:manufacturer_id(主键)、last_name(厂商姓氏)product_types表:type_id(主键)、type_name(产品类型名称)product表:product_id(主键)、product_name(产品名称)、manufacturer_id(外键关联厂商表)、type_id(外键关联产品类型表)
接下来是满足需求的SQL查询:
SELECT m.last_name, p.product_name FROM manufacturer m JOIN product p ON m.manufacturer_id = p.manufacturer_id WHERE m.manufacturer_id IN ( SELECT manufacturer_id FROM product GROUP BY manufacturer_id HAVING COUNT(DISTINCT type_id) >= 2 ) ORDER BY m.last_name, p.product_name;
逻辑解释
- 子查询部分:先从
product表按厂商分组,统计每个厂商生产的不同产品类型数量,筛选出数量≥2的厂商ID。 - 外层查询:将符合条件的厂商和他们的产品关联起来,返回厂商姓氏和对应的产品名称,最后按姓氏和产品名称排序方便查看。
如果你的ER图里关联关系或者字段有差异,比如产品类型和产品的关联方式不同,随时调整关联条件就好~
内容的提问来源于stack exchange,提问作者J Kayn
相关产品推荐
相关产品推荐

