关于数据库,求会用SQL语句的高手帮我解答一道题,谢谢了~~

有4个关系模式如下:
出版社(出版社编号,出版社名称)
图书(图书编号,书名,出版社编号,定价)
作者(作者编号,姓名)
著书(图书编号,作者编号,作者排序)
注:作用排序=1表示第一作者,依此类推。
用SQL语句完成36~39题。
36.查询所有定价超过20元的书名。
37.统计每个出版社图书的平均定价。
38.将科学出版社的所有图书定价下调5%。
39.列出所有图书的书名、第一作者姓名和出版社名称。

1.select 书名
from 图书
where 定价>20
2.select 出版社名称,avg(定价) as 平均定价
from 图书,出版社
where 图书.出版社编号=出版社.出版社编号
group by 出版社编号
3.update 图书 set 定价=0.95*定价
where(select 定价 from 图书,出版社 where 图书.出版社编号=出版社.出版社编号and 出版社 名称='科学出版社')
4.select 书名,第一作者姓名,出版社名称
from 图书,出版社,作者,著书
where 图书.出版社编号=出版社.出版社编号 and 图书.图书编号=著书.图书编号 and 著书.作者编号=作者.作者编号 and 作者排序=1
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-07
36.
select 书名 from 图书 where 定价>20
37.
select b.出版社名称,avg(a.定价) from 图书 a
left join 出版社 b on b.出版社编号=a.出版社编号
group by b.出版社名称
38.
select a.书名,a.定价-a.定价*0.05,b.出版社名称 from 图书 a
left join 出版社 b on b.出版社编号=a.出版社编号
where b.出版社名称='科学出版社'
39.
select a.书名,d.姓名,b.出版社名称,from 图书 a
left join 出版社 b on b.出版社编号=a.出版社编号
left join 著书 c on c.图书编号=a.图书编号
left join 作者 d on d.作者编号=c.作者编号
where c.作者排序=1
order by c.作者排序
第2个回答  2011-04-07
ber, Salary FROM EMPLOYEE
JOIN
(SELECT Dnumber, avg(Salary) AS Asalary FROM EMPLOYEE
GROUP BY Dnumber) A
ON Dnumber = A.Dnumber
WHERE Salary > A.Asalary
ORDER BY Dnumber
(2)
SELECT Ename FROM EMPLOYEE
JOIN
(SELECT ESSN, COUNT(Pnumber) AS Pcount FROM WORKS_ON
GROUP BY ESSN
HAVING COUNT(Pnumber) > 3) A --未考虑同一个职工在不同时期参加同一个项目情况
ON ESSN = A.ESSN
(3)
CREATE VIEW DEPTPRO AS
(SELECT Dnumber, Pnumber, SUM(Hours) AS Thours FROM WORKS_ON
GROUP BY Dnumber, Pnumber); --每个部门的所有职工在每个项目中的工作总时数
SELECT A.Pname FROM DEPTPRO
JOIN DEPARTMENT A
ON Dnumber = A.Dnumber
JOIN PROJECT B
ON Pnumber = B.Pnumber
WHERE B.Pname = 'Middleware'
AND Thours = MAX(Thours);--在项目'Middleware'中工作时数最多的部门名称
第3个回答  2011-04-07
36.select 书名 from 图书 where 定价>20;
37.select t1.出版社名称,avg(t2.定价) 平均定价 from 出版社 t1,图书 t2 group by t1.出版社名称;
38.update 图书 set 定价 = 定价-定价*0.05 where (select 出版社名称 from 出版社 where 出版社名称='科学出版社');
39.select t1.书名,t2.姓名,t2.出版社名称,from 图书 t1
left join 出版社 t2 on t2.出版社编号=t1.出版社编号
left join 著书 t3 on t3.图书编号=t3.图书编号
left join 作者 t4 on t4.作者编号=t3.作者编号
order by t3.作者排序 having t3.作者排序=1
相似回答