Закодировать формулу расчета значения на основе данных связанной таблицы

У меня есть запрос вычисления себестоимости товара по его 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)


Ответы (0 шт):