-1

我有一个捐赠者表和证书表。捐助者表具有属性

(one)
Donor No*
Donor Name
Donor Address
Donor Phone
Donor E-mail

并且是证书表中具有属性的一对多关系

(many)
Certificate No*
Certificate Type
Certificate Issue Date

什么 SQL 语句可用于查找收到特定类型证书(即金、银铜)的捐赠者数量

我试过了

select count (*) from Donor.Certificate where Certificate = gold ect...
4

3 回答 3

0

您需要添加一个将捐赠者表与证书相关联的字段,然后添加一个证书字段

捐助者表:

(one)
Donor No*
Donor Name
Donor Address
Donor Phone
Donor E-mail
Donor Certificate_Type

证书表:

(many)
Certificate No*
Certificate_Type
Certificate Issue Date

SQL,阅读更多关于左连接的信息

SELECT count(*)
FROM Donors
LEFT JOIN Certificate
ON Donors.Certificate_Type=Certificate.Certificate_Type
WHERE Donors.Certificate_Type = 'the type'
于 2013-06-13T14:11:15.513 回答
0
SELECT (*) FROM Donor.Certificate C
LEFT JOIN Donor D ON .No = C.No
WHERE certificate = Gold

尝试类似的事情,你对你的架构不是很清楚,所以你必须调整

于 2013-06-13T14:06:27.670 回答
0

正如 Charlest Bretana 所指出的,您向我们展示的 DDL 并未显示将证书与捐赠者相关联的机制。如果没有这样的机制,根据对数据之间特定关系的期望来查询数据库会变得更加困难。

您的从属表 Certificates 需要拥有 Donors 表的外键,以指示哪个 Donor 拥有证书。这是表示关系的最简单和最常见的方式。

(one)
Donor No*
Donor Name
Donor Address
Donor Phone
Donor E-mail
And is a one to many relationship in the Certificate table with attributes

(many)
Certificate No*
Foreign Key Donor No*
Certificate Type
Certificate Issue Date
于 2013-06-13T14:18:54.580 回答