sql - 找出只供应红色零件的供应商
问题描述
又是一个sql问题。
我要做的第一件事是加入表格:从 cat c JOIN 部分 p ON c.PID=p.PID 中选择 SID;我尝试了 having 子句,但我没有聚合函数并且使用“where”是没用的,因为我得到了所有供应红色部分的供应商。
有普遍的答案吗?这样我也可以获得只提供绿色零件的供应商吗?
需要的输出:
SID
-----
S2
提供的表格:
SELECT * FROM parts
PID PNAME COLOR WEIGHT CITY
----- ---------- ---------- ------ ----------
P1 Nut red 13 London
P2 Bolt black 18 Paris
P3 Screw red 17 Rome
P4 Screw silver 14 London
P5 Cam trans 12 Paris
P6 Cog cyan 19 London
P7 Nut magenta 15 -
P8 Wheel red 15 Munich
P9 Bearing green 15 Milano
9 record(s) selected.
SELECT * FROM catalog
SID PID COST
----- ----- ------------
S1 P3 0.50
S1 P4 0.50
S1 P8 11.70
S2 P1 16.50
S2 P3 0.55
S2 P8 7.95
S3 P8 12.50
S3 P9 1.00
S4 P5 2.20
S4 P6 1247548.23
S4 P7 1247548.23
11 record(s) selected.
感谢您的大力帮助。
解决方案
你确实想要聚合。一种方法是使用min()
and比较颜色max()
:
select c.SID
from cat c JOIN
part p
ON c.PID = p.PID
group by c.SID
having min(p.color) = max(p.color) and -- all colors are the same
min(p.color) = 'red' -- and that color is 'red'
推荐阅读
- tensorflow - `nvidia-smi` 之间的内存使用指标有什么区别`nvidia-smi dmon`
- c# - 使用斑马打印机 [ZPL] 在连续标签上打印带有页眉、正文和页脚的票据
- c# - 在 C# 中计算表的总记录数
- c# - ASP.NET Core API 错误:“路由超过允许的最大段数 28”
- flutter - 屏幕加载时地图不会绘制在用户位置上
- c# - Unity 3d,平滑提速(自动)
- javascript - 在字符串数组javascript中设置参数键
- python - uMongo 从集合中获取随机文档
- java - 是否可以将 JVM 选项存储在文件中?
- javascript - SwaggerUIBundle 隐藏方案