Вы не очень четко понимаете, какую систему баз данных вы используете - и такие вещи очень специфичны для вендора.
Если вы используете 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
столбец. Теперь запустите свои отчеты в этой таблице - он будет не изменяет, если вы ничего не измените сами (в отличие от просмотра, которое всегда обновляется).
В каком поле находятся эти таблицы? – MacGyver
is id field ....: P – Mirko
** Что ** система баз данных и какая версия ?? ** SQL ** - это только язык структурированных запросов - язык, используемый многими системами баз данных - SQL - это ** НЕ ** продукт базы данных ... такие вещи, как это очень часто зависят от поставщика, - поэтому нам действительно нужно знать, что система базы данных, которую вы используете .... –