数据库问题,这几条SQL语句怎么写!!!考研要用,急急急!!!

供应商表S由供应商代码(SNO),供应商姓名(SNAME),供应商状态(STATUS)、供应商所在城市(CITY)组成;零件表P由零件代码(PNO)、零件名(PNAME)... 供应商表S由供应商代码(SNO),供应商姓名(SNAME),供应商状态(STATUS)、供应商所在城市(CITY)组成;
零件表P由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成;
工程项目表J由工程项目代码(JNO)、工程项目名称(JNAME)、工程项目所在城市(CTIY)组成;
供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成,QTY表示某供应商供应某种零件给某工程项目的数量。
1、找出各种颜色的零件数量;
SELECT COLOR,SUM(QTY) FROM P,SPJ GROUP BY COLOR 我是这样写的,为什么查到的结果不对啊。
2.列出所有工程项目及其使用零件的情况,如果该工程项目没有使用任何零件,则列出NULL;
3.找出超过零件平均重量的每个零件的零件代码、零件名和颜色。
4.查询红色零件与重量大于10KG的零件的交集
SELECT PNO FROM P
WHERE COLOR='红色' AND WEIGHT>10
(我这样写,明明表中有符合的结果,但是查不出来。)
5.将查询供应商表S的权限授给用户U1;
6.将用户U2对零件表P的INSERT权限收回;
7.定义一个BEFORE行级触发器Insert_Or_Update_P,为零件P定义完整性规则“红颜色零件重量不得低于10kg,如果低于10kg,自动改为10kg”;
8.创建一个修改特定供应商的存储过程SUpdate;

问题比较多,麻烦慢慢帮我回答下,谢谢了。真的很急,麻烦了。
展开
 我来答
喔喔宝宝lw
2012-12-25 · 超过28用户采纳过TA的回答
知道答主
回答量:104
采纳率:0%
帮助的人:71.3万
展开全部
1. SELECT COLOR,SUM(QTY) FROM P GROUP BY COLOR
2. select J.JNO,J.JNAME,tt.QTY
from J
left outer join (select sum(QTY) as QTY ,JNO from SPJ) as tt
on J.JNO = tt.JNO
3.
SELECT * FROM P
having WEIGHT > avg(WEIGHT )

4.好像你写得没错

5.
GRANT
SELECT
ON S
TO
U1
WITH grant OPTION;

6.
REVOKE INSERT FROM U2

7. (不同的数据库有不同的语法,以下是sql2000)
create trigger Insert_Or_Update_P
on P
INSTEAD OF insert ,update
as
begin
INSERT INTO P(PNO,PNAME,COLOR,WEIGHT)
SELECT PNO, PNAME,COLOR,case when WEIGHT < 10 and COLOR = '红色' then 10 else WEIGHT end
FROM INSERTED
end
go

8.不太清楚具体要求,是不是要写个存储过程?

CREATE PROCEDURE SUpdate
@as_sno varcahr(50),
...
as
begin
update S
set ...
where SNO = @as_sno

end
go
shishumei_java
2012-12-25 · 超过19用户采纳过TA的回答
知道答主
回答量:75
采纳率:0%
帮助的人:23.7万
展开全部
第一个这样写试试:select color,count(*) from p group by color;
第二个:select nvl(spj.jno,0) from j,spj where j.jno(+) = spj.jno;
第四个:你先select * from p where color = '红色';如果能查到结果的话就证明是后面那句话写的不对,然后再查select * from p where color = '红色' and weight>10;先看weight字段的类型是什么,如果是warchar2和number类型的以上这样写都没错;
第五个:grant select on s to u1;
第六个:revoke insert on table p from U2 cascade;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-12-25
展开全部
1 SELECT COLOR,SUM(QTY) FROM P,SPJ where p.pno=spj.pno GROUP BY COLOR
2 select j.*,SNO,PNO,isnull(QTY,null) from j left join spj on j.jno=spj.jno
3 select * from p group by pno,pname,color,weight having avg(weight)<weight
4
5 grant select
on s
to u1
6 revoke insert
on p
from u2

7
create trigger Insert_Or_Update_P
on p
for insert,update
asdeclare @a int,@b intbegin
select @a=weight,@b=pno from pif @a<10 beginupdate p set weight=10 where pno=@bend
end8create proc SUpdate@name varchar(10)asupdate s set status='关' where namw=@namego
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pengyewei2011
2012-12-25
知道答主
回答量:33
采纳率:0%
帮助的人:21.3万
展开全部
找出各种颜色的零件数量
select p.COLOR,SUM(SPJ.QTY) from P,SPJ where p.PNO=SPJ.PNO GROUP BY COLOR
更多追问追答
追问
...为什么我把where p.PNO=SPJ.PNO 放在GROUP BY COLOR 后面写就会出错啊?
SELECT COLOR,SUM(QTY) FROM P,SPJ GROUP BY COLOR where p.PNO=SPJ.PNO 像这样 就会出错。。
追答
肯定要放在最后呀,先条件然后在GROUP BY
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
331220015
2012-12-25 · 超过13用户采纳过TA的回答
知道答主
回答量:56
采纳率:0%
帮助的人:39.3万
展开全部
嗨,哥们,我们好像考一个学校。是北京工业大学的管理科学与工程专业吧
追问
哈哈,是吧。你什么学校?复习的怎么样啊。我估计无缘了今年。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式