select sum(x.totalcost)
from (
select c.item_id, c.quantity * ip.price as totalcost
from cart c
join items_prices ip
on c.item_id = ip.item_id
left join items_prices ip2
on ip2.quantity > ip.quantity
and c.quantity >= ip2.quantity
where c.quantity >= ip.quantity
and ip2.quantity is null
) x
Соединение обратно на items_price снова позволяет нам отфильтровывать любые случаи, когда существует большее количество, которое все еще соответствует нашим критериям. Это должно быть близко к тому, что мы после