Вам не очень понятно, какую систему баз данных вы используете - и подобные вещи зависят от поставщика.
Если вы используете SQL Server, ответ прост: вы не можете сделать это.
Вычисляемый столбец не может ссылаться на другую таблицу - только константы, столбцы из той же таблицы - или хранимые функции.
Теперь вы можете создать хранимую функцию, которая будет извлекать эти данные из другой таблицы - я бы НЕ сделал это. Использование доступа к данным в хранимых функциях - верный рецепт снижения производительности - просто не делайте этого!
Решением здесь, вероятно, будет представление по двум таблицам, которое будет выполнять вычисления
CREATE VIEW dbo.ProductAndDetail
AS
SELECT
p.ID, p.Price,
d.Quantity,
Total = ISNULL(d.Quantity, 0) * ISNULL(p.Price, 0.0)
FROM
dbo.Product p
INNER JOIN
dbo.Detail d ON p.ID = d.ID
Затем вы можете выбрать из этого нового вида:
SELECT ID, Price, Quantity, Total
FROM dbo.ProductAndDetail
и Total
рассчитывается «на лету» для каждой строки
Обновление: ах - ладно, похоже, вам нужен статический набор данных для отчетов - в этом случае вы можете сделать следующее:
SELECT
p.ID, p.Price,
d.Quantity,
Total = ISNULL(d.Quantity, 0) * ISNULL(p.Price, 0.0)
INTO
dbo.ProductAndDetailsForReporting
FROM
dbo.Product p
INNER JOIN
dbo.Detail d ON p.ID = d.ID
Затем вы получите новую таблицу dbo.ProductAndDetailsForReporting
, которая содержит все строки из Product
и Detail
и вычисленный столбец Total
. Теперь запустите ваши отчеты для этой таблицы - она не изменит , если вы не измените что-то самостоятельно (в отличие от представления, которое всегда обновляется).