我目前正在攻读数周的数据库考试,过去他们提供的论文(没有答案)给了我一些问题。
我很担心下面的问题,因为如果我以正确的方式接近他们,我没有什么可以检查的,所以我想知道这里是否有人可以看一看并帮助我?我是否以正确的方式回答了他们?
...谢谢
以下架构中有3个表,
Suppliers (sid(PK):integer, sname:string, address:string)
Parts (pid(PK):integer, pname:string, color:string)
Catalog (sid(PK):integer, pid:integer, cost:real)
目录关系列出供应商对零件收取的价格。
我有以下问题,我的答案如下:
列出有供应商的零件的pnames
SELECT pname
FROM Parts, Catalog
WHERE Parts.pid = Catalog.pid
AND Catalog.sid = Suppliers.sid
AND Catalog.sid NOT NULL;
查找供应红色部分或绿色部分的供应商的sid
SELECT sid
FROM Catalog, Parts
WHERE Catalog.pid = Parts.pid
AND Parts.color = 'red'
OR Parts.color = 'green';
查找供应商的sids,其中某些部分的费用高于该部分的平均成本(平均所有供应该部分的供应商)
SELECT sid
FROM Catalog
WHERE cost > (AVG(cost));
答案 0 :(得分:0)
这是我最好的回答,但我还没有测试过
列出有供应商的零件的pnames
SELECT pname
FROM Parts
WHERE
Parts.pid NOT IN
(SELECT Catalog.pid FROM Catalog);
找出供应红色部分或绿色部分的供应商的sid
SELECT sid
FROM Catalog, Parts
WHERE Catalog.pid = Parts.pid
AND (Parts.color = 'red'
OR Parts.color = 'green');
找出供应商的sids,这些供应商的某些部分收取的费用超过该部分的平均成本(平均所有供应该部分的供应商)
SELECT sid
FROM Catalog c
INNER JOIN
(SELECT pid, AVG(cost) AS avg_cost
FROM Catalog
GROUP BY pid) c_avg ON c.pid = c_avg.pid AND c.cost > c_avg.avg_cost
ORDER BY c_avg.avg_cost DESC
答案 1 :(得分:0)
你可以在这里练习.... http://www.w3schools.com/sql/trysql.asp?filename=trysql_select_all
即使您没有成为DBA,这项技能对您也非常有帮助。