Записать мастер значения в базу данных MySQL? - PullRequest
0 голосов
/ 24 января 2019

Я пытаюсь найти хороший способ справиться с этой ситуацией строго, используя MySQL.(используя сгенерированные столбцы, представления, логические операторы, процедуры и т. д.)

Я упростил это для примера.Допустим, у меня есть таблица, в которой хранится информация о затратах на производство для конкретных продуктов в отдельные годы на конкретных фабриках.

Некоторые из этих затрат характерны для данного продукта.(пластик, стоимость литья, упаковка, рабочая сила и т. д.)

И некоторые из этих затрат являются довольно общими;Я могу хотеть присвоить им конкретное значение, но для большинства из них большую часть времени я просто хочу, чтобы они ссылались на конкретное значение для фабрики в этом году.Я буду ссылаться на них как на «основные» значения.(Например, накладные расходы, такие вещи, как процентные расходы, электроэнергия, тепло, налоги на имущество, административный труд и т. Д.)

Затем, если я обновлю свои значения Master, затраты на них будут автоматически скорректированы;и они могут быть разными для каждого года и фабрики.(Поэтому я не могу просто использовать значения по умолчанию.)

Таким образом, мои столбцы могут быть:

table_example

И вот логикакак это будет определено:

$MValue(var) = var WHERE product_id = M (Master) AND year = year AND factory_id = factory_id;

Тогда, по сути, если бы я хотел использовать уникальную стоимость для этого продукта, я мог бы указать сумму стоимости в поле, но если бы я хотел, чтобы она использовала значение Master(показано в строке 4, обозначено буквой M), затем я мог бы вставить $ MValue (column_id) в поле.

Любые мысли о том, как это можно сделать с MySQL?

Я должен добавитьчто я уже использую сгенерированные (вычисляемые) столбцы и представления для этих полей, поэтому я ищу строго MySQL-решение.

1 Ответ

0 голосов
/ 24 января 2019

Я предлагаю сохранить производные затраты как NULL в строках вашего продукта, а затем определить представление, которое присоединяется к основной строке.

CREATE VIEW finalcosts AS
  SELECT p.cost_id, p.product_id, p.factory_id, p.plastic_cost, p.molding_cost,
    COALESCE(p.interest_cost, m.interest_cost) AS interest_cost,
    COALESCE(p.tax_cost, m.tax_cost) AS tax_cost
  FROM costs AS p
  JOIN costs AS m ON p.year = m.year and m.product_id = 'M (Master)'

Нет способа использовать столбец по умолчанию или сгенерированный столбец для извлечения данных из другой строки. Эти выражения должны ссылаться только на значения в одной строке.

П.С .: Что касается терминологии «основных» ценностей, я привык к терминам «прямые затраты» и «косвенные затраты». Прямые затраты - это те, которые легко относятся к себестоимости продукции на единицу продукции, а косвенные затраты подобны вашим основным затратам, они относятся к бизнесу в целом и обычно не масштабируются на единицу произведенной продукции.

...