我获得了以下数据库架构
donuts (name: string, price: integer)
grocery (no: string, gname: string, minCredit: integer)
distributor (dname: string, gno: string, purchaseYear: integer)
对于每年(distributor.purchaseYear),杂货店“VONS”购买至少一个甜甜圈,找到购买的甜甜圈数量。输出是元组的集合,表示由“VONS”
购买的年份和甜甜圈数量我不知道如何处理这个问题。我试过了
SELECT (d.purchaseYear, COUNT(dd.name))
FROM distributor d, donut dd, grocery g
WHERE g.name = "VONS"
这似乎给了我不正确的输出。
答案 0 :(得分:1)
假设你有一个如下的架构
donuts (gname: string, price: integer, purchaseYear: integer) // record for every donut purchased by the grocery gname in the year
grocery (gno: string, gname: string, minCredit: integer) // grocery details
distributor (dname: string, gno: string, purchaseYear: integer) // distributor details
您可以使用以下查询获取数据
select
g.name
, d.purchaseyear
, count(do.gname)
from distributor d
join grocery g on g.gno = d.gno
join donuts do on do.gname = g.gname
where g.name = 'VONS'
group by g.name, d.purchaseyear
答案 1 :(得分:0)
如果您使用完全分离的表,则无效。请考虑使用foreign keys
和joins
从不同的表中获取信息,但相互关联on
一个或多个特定字段。