MySQL一个小问题请教大家!

candy824 2006-07-29 09:25:01
题目是这样的:
已知:供应量表SPJ,包含四个列:SNO(供应商号),PNO(零件号),QTY(供应量);
求这样的供应商号,对于该供应商供应的每个项目,其所供应的零件的数量都达到或超过200,并且该供应商供应零件两种以上(含两种)。
我是这样写的:SELECT SNO
FROM SPJ
GROUP BY SNO
HAVING COUNT(DISTINCT PNO)>=2
HAVING QTY>200;
最后有错误,请大家帮帮忙,我的错在哪,另外正解是怎样的?(刚开始学,很什么都不会,大家见笑了)
...全文
157 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
candy824 2006-07-29
  • 打赏
  • 举报
回复
哦,我忘记改了,原题是有四列,但是有一列在这个题上没有用到,我就没把它写进来。
你用是的子查询啊,呵呵,我知道了,谢谢louisXIV了!
LouisXIV 2006-07-29
  • 打赏
  • 举报
回复
如果是这样的话

select sno
from spj
where sno not in(select sno from spj where qty<200)
group by sno
having count(distinct pno)>=2

不过较早的MySQL版本好像不支持子查询。

此外,你说有4列,但是只给出了3列?
candy824 2006-07-29
  • 打赏
  • 举报
回复
但是如果是SELECT SNO
FROM SPJ
WHERE QTY>200
GROUP BY SNO
HAVING COUNT(DISTINCT PNO)>=2;
那么如果供应商供应3种零件,其中两种零件的的数量都达到或超过200,另外一种的数量只有100,按这个方法也会显示出这个供应商是符合题意的,然而题目所说的是供应的零件的数量都达到或超过200,就是说所有的都超过了200。这样结果就不符合要求了。???????
LouisXIV 2006-07-29
  • 打赏
  • 举报
回复
达到或超过200



WHERE QTY>=200

或者

WHERE QTY!<200
LouisXIV 2006-07-29
  • 打赏
  • 举报
回复
--按错键了

SELECT SNO
FROM SPJ
WHERE QTY>200
GROUP BY SNO
HAVING COUNT(DISTINCT PNO)>=2
LouisXIV 2006-07-29
  • 打赏
  • 举报
回复
Having后的字段必须包含在聚合函数(如Sum,Max,Min,Count等里面),多条件之间用and相连

你的语句可以写成下面的样子试试

SELECT SNO
FROM SPJ
WHERE
GROUP BY SNO
HAVING COUNT(DISTINCT PNO)>=2

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧