首先,我为糟糕的措辞道歉,但我不知道如何描述我在做什么......
我有一个计算机类型表(id、type、name),称为 com_types
id | type | name
1 | 1 | Dell
2 | 4 | HP
在第二个表中,我有每台单独的计算机,有一个列“type_id”来表示它是什么类型的计算机,称为 com_assets
id | type_id | is_assigned
1 | 4 | 0
2 | 1 | 1
我想创建一个视图来显示每种计算机类型,以及我们手头和正在使用的计算机数量以及总数,因此结果将是
id | type | name | on_hand | in_use | total |
1 | 1 | Dell | 0 | 1 | 1 |
2 | 4 | HP | 1 | 0 | 1 |
如您所见,on_hand、in_use 和 total 列依赖于第二个表中的 type_id 和 is_assigned 列。
到目前为止,我已经尝试过这个......
CREATE VIEW test AS
SELECT id, type, name,
( SELECT COUNT(*) FROM com_assets WHERE type_id = id AND is_assigned = '0' ) as on_hand,
( SELECT COUNT(*) FROM com_assets WHERE type_id = id AND is_assigned = '1' ) as in_use,
SUM( on_hand + in_use ) AS total
FROM com_types
但是所有这些返回的是一个具有所有正确值的列,除了总数等于另一个表中的所有计算机。我需要一个触发器来代替吗?