我有两张 table :T_Guest、T_Table
在T_Guest中,我有一个客人名单。每个客人都有一个 ID (g_no) 和与该客人相关的餐 table ID (t_no)。 同一张 table 可能有很多客人。
在T_Table中,我有一个表格列表。每个表都有一个 ID (t_no) 和一个描述该表有多少个地点的字段 n_places。
问题: 我需要构建一个 SQL 查询(在 MS Access 中),它将显示仍然有空闲位置的表 ID 的列表。
我有一个想法,首先找到已满的表的列表,而不仅仅是从整个可用表组中对该组实现异常。
但是要计算有多少张表有零个可用位置,我需要以某种方式计算每个表:
n_places - NUMBER_OF_GUESTS_ON_THAT_TABLE
最后一个 (NUMBER_OF_GUESTS_ON_THAT_TABLE
) 只是:
SELECT COUNT(*)
FROM T_Table INNER JOIN T_Guest ON T_Table.t_no = T_Guest.t_no
GROUP BY T_Table.t_no
但我不知道如何实现差异n_places - NUMBER_OF_GUESTS_ON_THAT_TABLE
有人可以帮我完成这样的任务吗???
最佳答案
您可以使用客人计数作为派生表:
SELECT t.t_no, t.n_Places-Nz(g.Guests,0) As FreePlaces
FROM T_Table t
LEFT JOIN (
SELECT t_no,COUNT(*) as Guests
FROM T_Guest
GROUP BY t_no) g
ON t.t_no = g.t_no
要获取带有空格的表格,您可以添加:
WHERE t.n_Places-Nz(g.Guests,0)>0
关于sql - 如何计算两个表的列值之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11972767/