он возвращает только одну строку.и если я использую группу, это дает мне неправильный вывод - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть три столовых питания, расходы, пользователи! я хочу подсчитать пользователей детали еды за месяц! я пытался во многих отношениях я застрял :(

Я пытался использовать group by user.id, но он возвращает общую стоимость всех пользователей. такой же как общий расход! вывод расчетов совершенно неожиданный.

SELECT u.name , 
           ((SUM(tot_expenseamount)/ SUM(tot_noofmeal))*tot_noofmeal) as total_Cost,
           IFNULL(t.tot_expenseamount,0) AS tot_expense_amount ,
           IFNULL(n.tot_noofmeal,0) AS tot_no_of_meal 
    FROM users u
    LEFT JOIN (
        SELECT e.user_id , SUM(e.expenseamount) AS tot_expenseamount 
        FROM expenses e 
        WHERE e.expensedate >= '2019-04-01' + INTERVAL 0 MONTH AND e.expensedate < '2019-04-01' + INTERVAL 1 MONTH
        GROUP BY e.user_id ) t ON t.user_id = u.id
    LEFT JOIN (
        SELECT m.user_id , SUM(m.noofmeal) AS tot_noofmeal 
        FROM meals m 
        WHERE m.mealdate >= '2019-04-01' + INTERVAL 0 MONTH AND m.mealdate < '2019-04-01' + INTERVAL 1 MONTH
        GROUP BY m.user_id ) n ON n.user_id = u.id 
    GROUPBY u.name 
   ORDER BY u.name 

Я ожидал, что общая стоимость для пользователя !! общая стоимость = норма питания * общее количество еды пользователя; норма приема пищи = сумма общих расходов / сумма всего потребления пользователем

пример: у меня три пользователя x, y, z, их апрель месяц всего 10,20,30 и расходы 2000,1000,3000

теперь общие расходы = 6000 (2000 + 1000 + 3000) всего еды = 60 (10 + 20 + 30) еды ставка = (6000/60) = 100,00

* X 1014 * для пользователя общая стоимость будет разрешена для x, общая стоимость = 10 * 100 = 1000 / =

обеденный стол

meal table

таблица пользователей

user table

таблица расходов

expenses table

ожидаемый результат

expected output

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...