я пытаюсь получить цену определенной услуги в базе данных MySQL, вычисляется следующим образом:Запрос MySQL, чтобы получить цену от 4 таблицы
У меня есть 4 таблицы:
- Услуги (idService (INT), ...)
- Даты (idDate (INT), idService (INT), дата (DATETIME), километры (INT), монтаж (BOOL), ...)
- Особенности (idFeature (INT), описание (VARCHAR) , цена (FLOAT), ...)
- Features_Services (idFeature (INT), idService (INT), блоки (INT), скидки (FLOAT), ...)
Отношения:
Один ко многим между датами и услуги: Таким образом, услуга может проводиться по нескольким датам, каждый из которых связан со своими километрами (для количественной оценки командировочных расходов, 0,6 евро каждая из них по окончательной цене обслуживания) и монтаж (если не активен в каждую дату, стоимость услуги будет декрементируется на постоянную величину, 100 евро в моем случае) ...
Многие ко многим между Особенности и услуги через Features_Services: Таким образом, многие услуги может иметь много связанных функций. Каждая функция имеет единую цену, но и отношение имеет параметры, такие как единицы и скидка ...
Ну, с помощью следующего запроса, я получаю цену обслуживания правильно, но только относительно километры и монтаж первого дня ...
SELECT
CASE
WHEN dates.mounting = 0 THEN
SUM(features.price * features_services.units * (1 - features_services.discount/100)) + 0.6 * dates.kilometers - 100
ELSE
SUM(features.price * features_services.units * (1 - features_services.discount/100)) + 0.6 * dates.kilometers
END AS servicePrice
FROM features_services
JOIN features ON features_services.idFeature = features.idFeature
JOIN dates ON features_services.idService = dates.idService
WHERE features_services.idService = XXXXXXX
GROUP BY dates.idDate LIMIT 1
проблема заключается в том , что мне нужно перебрать все связанные с ним датами добывающих километров и монтажные и применяя neccesary поправки к цене ... Может быть, с избранным insi de a select, для дат?
Любая помощь очень ценится. Чем вы заранее.
Необычно использовать тип данных FLOAT с деньгами. См. DECIMAL. – Strawberry