У меня есть 3 таблицы: DefMatiere, в котором хранятся имена элементов и ингредиент таблицы, который содержит используемые кванты и StockData, который содержит купленные количества и их значения.Как получить сумму в трех таблицах
Я написал этот запрос для получения названий предметов и количества, используемых и купленных, и суммы, уплаченные.
SELECT dm.nom, SUM(IF(dm.id=ig.matid, ig.qty, 0)) AS used,
SUM(DISTINCT IF(dm.id=sd.matid ,sd.quantite,0)) AS achete,
SUM(DISTINCT IF(dm.id=sd.matid ,sd.montant*(1+(sd.tvaval/100)) ,0)) AS val,
(SUM(DISTINCT IF(dm.id=sd.matid ,sd.quantite,0))- SUM(IF(dm.id=ig.matid, ig.qty, 0))) AS restant
FROM DefMatiere AS dm
LEFT JOIN ingredient AS ig ON ig.matid=dm.id
LEFT JOIN StockData AS sd on sd.matid = dm.id
WHERE dm.type = 1 GROUP BY dm.nom
Это дает то, что я хочу, но, похоже, это очень длинный раздражающий роман.
Можно ли использовать псевдонимы для создания этих расчетов LIKE achète - Валу AS restant
Потому что я хочу, чтобы добавить слишком VAL/achète * используется вал/achète * restant в этом случае мой запрос становится, как Господь из томов RINGS 6.
Или я должен продолжить писать свой роман? Любая помощь будет учить меня
[EDIT]
Однако после ввода еще несколько ДАННЫЕ Я видел этот запрос не является правильным.
Потому что если в StockData имеется более одной строки с таким же матом, результат, который я получаю для использования, удваивается или утроится в зависимости от количества строк.
HERE результаты запроса и решения я нашел
И HERE как я решил. Но я не мог найти подходящий запрос.
Вы хотите, чтобы псевдонимы были переменными, что невозможно. – Mihai
Возможно, что-то вроде: SELECT @ used = SUM (IF (dm.id = ig.matid, ig.qty, 0)) FROM table – Mihai
Пока это выполняется быстро, это единственное, что нужно беспокоиться о – Strawberry