【发布时间】:2013-11-04 05:16:36
【问题描述】:
我目前正在准备几周后的数据库考试,过去他们提供的论文(没有答案)给了我一些问题。
我担心以下问题,因为如果我以正确的方式接近它们,我没有什么可检查的,所以我想知道这里是否有人可以看看并帮助我?我是否以正确的方式回答了他们?
谢谢...
以下架构中有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)
目录关系列出了供应商对零件收取的价格。
我有以下问题,我的答案如下:
-
列出有供应商的零件的名称
SELECT pname FROM Parts, Catalog WHERE Parts.pid = Catalog.pid AND Catalog.sid = Suppliers.sid AND Catalog.sid NOT NULL; -
查找供应红色零件或绿色零件的供应商的 sids
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));
【问题讨论】:
-
无需重复 WHERE 语句。它以
WHERE开头,所有其他条件都使用AND或OR运算符添加。 -
好的,谢谢您的提示,我不确定是否必须再说一遍。除此之外,它看起来对吗?
-
hmm,你在条件(WHERE)或SELECT中使用的所有表,必须包含在FROM语句中,如果有多个则连接在一起。
-
好的,我现在已将其更改为将这些表包含在 FROM 语句中。还要别的吗? (到目前为止非常感谢)
-
我记得这场斗争......这是处理它的方法。使用 INNER JOIN 从表中获取所有数据(在您的书中)。然后用 WHERE 过滤数据。
标签: mysql sql database relational-database database-schema