【发布时间】:2015-08-26 10:36:35
【问题描述】:
对于给定的数据库数据结构:
Table Attribute Type Glossary
Species Sp_name C(10) P.K. Species name
sp_woodtype C(10) Wood Yielded by tree
sp_maxht I Max.height
Forest Fo_name C(10) P.K. Forest name
Fo_size I Forest area
Fo loc C(10) Geographical name
Fo_comp C(10) Forest owner
Tree Tr_species C(10) F.K. species.sp_name
Tr_forest C(10) F.K. forest.fo_name
Tr_numb I P.K. Sequence number
Tr_planted Date Date of planting
Tr_loc C(10) Forest quadrant
Tr_parent I F.K. tree.tr_numb Procreating tree reference
Measure Me_trnumb I F.K. tree.tr_numb
Me_numb I P.K. Sequence number
Me_result I Test's measure
Me_date Date Measure taken on
Me_type C(10) Type of measure
PK是主键,F.K.为外键,C(N) Character(N)类型,I Integer类型
我需要选择在所有森林中都发现了哪些树种,所以我尝试了以下方法,但似乎错误:
SELECT fo_name.forest, sp_name.species
FROM forest, species;
SELECT tr_species.tree, tr_forest.tree
FROM tree;
SELECT fo_name.forest, sp_name.species
FROM forest, species
INTERSECT
SELECT tr_species.tree, tr_forest.tree
FROM tree;
在解决这个问题时,差异列表是否比 INTERSECT 更好?
【问题讨论】:
-
如果这是一道考试题,你应该自己解决。无论哪种情况,
INTERSECT都不是解决方案。据我了解这个问题,您应该提供一份物种清单,每个物种都存在于所有森林中。因此,如果您在表“森林”中有 10 条记录,则在表“树”中找到存在于 10 个不同森林中的那些“tr_species”。在“树”上应用合适的聚合函数,然后将JOIN应用于“物种”。交给你了。 -
这是3年前的考试题。万一你错过了,我说修改
-
从这个问题中你有什么不明白的地方?有数据库,问题是在所有森林中都发现了哪些树种?
-
关闭原因似乎不正确。我很清楚要问什么。
-
它以作为家庭作业的下意识反应而结束,因为它相当广泛,而不是专注于特定的技术方面。我进行了编辑以将其重点放在技术方面并重新投票。祝你考试顺利。
标签: sql sql-server oracle postgresql relational-division