我为出租车公司实施了一个数据库。我使用PostgreSQL来创建这个数据库。我有4个实体客户,公司,司机和预订。目前,我无法找到计算某家公司有多少司机的方法。
在驱动程序实体中使用外键,即'firmid'。 'firmid'创建一个链接,告诉数据库某个驱动程序属于某个公司。
在公司表格中,我有一个名为“no of drivers”的专栏。目前,我必须从驱动程序实体中手动计算属于特定公司的驱动程序数,并将整数输入到公司实体的列中。是否有任何可以实现的公式或某些功能可以自动执行此过程。
例如,如果我要从驱动程序实体中删除驱动程序,则公司实体中特定记录的驱动程序数量应减少,反之亦然,以便添加驱动程序。
这个问题一直困扰着我一个星期。
更新20/12/2014
我尝试添加一个约束来检查驱动程序的数量:
ALTER TABLE firm ADD CONSTRAINT numberofdrivers_check CHECK (driversno ~ (SELECT COUNT (*) AS drivers FROM driver d GROUP by d.firmno ORDER BY 01));
但我收到以下错误:
ERROR: operator does not exist: bigint ~ bigint
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
有什么想法吗?
答案 0 :(得分:0)
我建议不要在数据库中存储这样的聚合值。只需在需要时计算它。
SELECT d.Firm_ID, count(*) AS Driver_Count
FROM Drivers d
GROUP BY d.Firm_ID