题目是这样的:
已知:供应量表SPJ,包含四个列:SNO(供应商号),PNO(零件号),QTY(供应量);
求这样的供应商号,对于该供应商供应的每个项目,其所供应的零件的数量都达到或超过200,并且该供应商供应零件两种以上(含两种)。
我是这样写的:SELECT SNO
FROM SPJ
GROUP BY SNO
HAVING COUNT(DISTINCT PNO)>=2
HAVING QTY>200;
最后有错误,请大家帮帮忙,我的错在哪,另外正解是怎样的?(刚开始学,很什么都不会,大家见笑了)
已知:供应量表SPJ,包含四个列:SNO(供应商号),PNO(零件号),QTY(供应量);
求这样的供应商号,对于该供应商供应的每个项目,其所供应的零件的数量都达到或超过200,并且该供应商供应零件两种以上(含两种)。
我是这样写的:SELECT SNO
FROM SPJ
GROUP BY SNO
HAVING COUNT(DISTINCT PNO)>=2
HAVING QTY>200;
最后有错误,请大家帮帮忙,我的错在哪,另外正解是怎样的?(刚开始学,很什么都不会,大家见笑了)
FROM SPJ
WHERE
GROUP BY SNO
HAVING COUNT(DISTINCT PNO)>=2
FROM SPJ
WHERE QTY>200
GROUP BY SNO
HAVING COUNT(DISTINCT PNO)>=2
FROM SPJ
WHERE QTY>200
GROUP BY SNO
HAVING COUNT(DISTINCT PNO)>=2;
那么如果供应商供应3种零件,其中两种零件的的数量都达到或超过200,另外一种的数量只有100,按这个方法也会显示出这个供应商是符合题意的,然而题目所说的是供应的零件的数量都达到或超过200,就是说所有的都超过了200。这样结果就不符合要求了。???????
from spj
where sno not in(select sno from spj where qty<200)
group by sno
having count(distinct pno)>=2不过较早的MySQL版本好像不支持子查询。此外,你说有4列,但是只给出了3列?
你用是的子查询啊,呵呵,我知道了,谢谢louisXIV了!