Мне было интересно, можно ли создать сгенерированный столбец, используя группу по запросу. Например, на приведенной ниже диаграмме возможно ли сгенерировать количество оборудования на основе количества актива, соответствующего его внешнему ключу?
Не как материализованный столбец в таблице. Но вы можете создать представление из запроса, который извлекает столбец таблицы плюс вычисляемый столбец.
Вы не можете сделать это с вычисляемым столбцом. Если вы хотите хранить и поддерживать такую информацию, вам потребуется код триггера для каждой операции DML в таблице asset
, что усложняет задачу.
С другой стороны, вы можете создать представление:
create view v_equipment
select e.*,
(select count(*) from asset a where a.equipment_id = e.equipment_id) as quantity
from equipment e
Это дает вам всегда актуальный взгляд на ваши данные. Вы можете запрашивать представление напрямую вместо таблицы, когда вам нужна информация quantity
.
Вероятно, нет (по крайней мере, ни в одной базе данных, с которой я знаком), но вы можете достаточно легко написать запрос для этого.