Закодировать формулу расчета значения на основе данных связанной таблицы
У меня есть запрос вычисления себестоимости товара по его id на mysql:
-- Вычисление себестоимости товаров и блюд, входящих в комбо
select sum(i.price_for_one) as value
from goods_combos gc,
goods g,
invoice i,
posinfo pi,
stock_item si,
warehouses w
-- count c
where gc.combos_id = :comboId
and gc.goods_id = g.id
and si.goods_id = g.id
and pi.client_legal_informations_id = 12
and w.pos_info_id = pi.id
and si.warehouses_id = w.id
and i.stock_item_id = si.id
-- and c.id = gc.combos_id
and i.archive = false
and i.expense = false
Суть задачи: надо почитать себестоимость комбо в ресторане. Комбо состоит из товаров и блюд в разичном соотношении. Это самое соотношение сохраняется вместе с комбо в базе как объекты count:
@OneToMany(mappedBy = "combos", cascade = CascadeType.ALL)
private List<Count> counts;
Сам объект count выглядит так:
public class Count {
@JsonIgnore
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long key;
private Long id = 0L;
private Integer count = 0;
private Integer type=0;
@JsonIgnore
@ManyToOne(optional = true)
private Combo combos;
}
Здесь key
- первичный ключ объекта в базе, а в поле id
находится идентификатор комбо. Поле count
- это количество товара или блюда в штуках. Как на основании этого объекта count расчитать себестоимость товара в комбо? (запрос расчета себестоимости товара дан выше). Формула расчета такая: значение поля count.count
умножается на себестоимость товара invoice.price_for_one
. Я не понимаю, как эту логику закодировать в запросе. Подскажите, пожалуйста.
Пример заполнения таблицы count:
key, count, id, type, combos_id
1,12,26,1,
2,12,26,1,
3,,3455,1,
4,,3464,1,
5,,3468,1,
6,,3470,1,
7,,3460,1,
Поле count.combos_id не функционирует, оно бесполезно.
Там должно быть что-то с if в условии, типа if(c.count != 0, значение1, значение2)