2015-03-16 2 views
0

У меня возникли трудности с моим запросом. Во-первых, позвольте мне обсудить с вами поток системы.Не удалось получить общую сумму каждого сотрудника по id && dept

Мой клиент владеет фирмой, а внутри учреждения у нее также есть мини-бакалейная столовая &) для своих сотрудников, чтобы взять их закуски/питание.

Сотрудникам не нужно платить по их заказу, вместо этого они просто перечисляют все предметы/блюда, которые они берут из бакалейной или столовой вместе с их именами и в день выплаты жалованья (ежемесячно) общая сумма предметы, которые были приняты каждым сотрудником, будут вычтены из общей зарплаты.

Ex1. Джон Картер взял Попкорн из бакалейной лавки стоимостью 45,00 долларов США, и к обеду он взял сэндвич вместе с салатом Цезаря из Столовой, стоимость которого составляет 125 долларов США. Поэтому в его зарплате из его зарплаты вычитается в общей сложности 170,00 долларов США.

В моей базе данных У меня было 3 стола. Один из них назван sales, на который были сохранены все предметы, количество, единица и сумма_состояний из бакалеи.
Ex. Biscuit, 10, pack;
Coffee Sachet, 5, pack; и т.д.
Так в основном, на моем stock столе у ​​меня есть item_name, quantity, unitOfmeasurement, amount_sale
Примечания: что amount_sale этого числа продаж продуктового. Для следующей таблицы у меня есть serve, где хранятся все запасы продуктов из столовой. У меня также есть item_name, quantity, и, конечно же, amount_serve; чтобы заполнить это.

и, конечно же, таблица customer, где таблицы клиентов, такие как name и т. Д., Где хранятся.

Это мой запрос, чтобы получить общую сумму, которая будет вычтена для каждой зарплаты сотрудников.

SELECT c.*, SUM(sale.amount_sale) AS a, SUM(serv.amount_serve) AS b 
    FROM customer AS c INNER JOIN sales AS sale ON 
     sale.customer_id=c.customer_id INNER JOIN serve AS serv ON 
     serv.customer_id=c.customer_id GROUP BY c.customer_id ORDER BY c.cdept ASC; 

С помощью этого запроса, вывод таков:

Рисунок 1:

Джон Картер должен быть вычтены $ 170,00
Джейн Хартли должны быть вычтены $ 130,00

выход был просто прекрасен и, как ожидалось, но мой клиент хочет следующее - получить общую стоимость каждого сотрудника за d epartment. Для дальнейшего объяснения этого вопроса, вот моя иллюстрация.

Рисунок 2 (ожидаемый выход):

Джон Carter- Accounting Отдел следует вычесть $ 170,00
Джейн Хартли - Бухгалтерский отдел должны быть вычтены $ 130,00
Сотрудников в бухгалтерии Кафе имеет общую сумму Из-за $ 300,00

Боб Освальд-Маркетинговый отдел должен быть вычтен 260 долларов США.00
Мари мая Стюарта Отдел маркетинга должен быть вычтены $ 100,00
Сотрудники отдела маркетинга имеет причитающуюся сумму в $ 360,00

С запросом я представил вам выше я получил нужный мне результат на рисунке 1. Хотя сейчас мне трудно сделать рисунок 2. Я попытался изменить свой запрос, добавив and c.cdept в GROUP BY c.customer_id Но он отображает только вывод.

Рисунок 3:

Джон Картер-Accounting отдел должен быть вычтен $ 300,00 Смысла его собственные из-за в настоящее время слились с Джейн Хартли.

Любая идея, как получить результат для рисунка 2? Что бы я добавил в свой запрос, чтобы получить его, или что-то не так с моим запросом?

ТАБЛИЦА СТРУКТУРА:

-SALES-
ид, Customer_ID, sale_date, qtysold, amount_sale.
-SERVE-
serve_id, customer_id, serveate, qtyserve, amount_serve.
-CUSTOMER-
customer_id, customer_name, cdept.

+1

Пример данных и ожидаемого результата будет очень полезен. –

+0

Но сэр @CoderofCode Я уже включил данные примера и ожидаемый результат в формах с 1 по 2. – MoonPrincess

+0

Это не пример данных, это только один пример того, как вы хотите его получить. Примеры данных могут включать в себя 5-10 строк данных, которые удовлетворяют всем вашим условиям, и ожидаемый результат - это то, что вы ожидаете в качестве вывода. –

ответ

0

Хотя вы описываете сценарий, мы не можем представить структуру таблицы должным образом. Я думаю, что таблица продаж содержит все материалы, связанные с продажей. Возможно, этот запрос может быть полезным для вас

выберите c.dept_name, сумма (sale.amount_sale) от клиента, как с внутренней присоединиться продажи как продажи на c.id = sale.customer_id группе c.dept_name;

Обновлено:
Я думаю, вам нужно добавить логику вашего PHP кода вместо MySQL Query. Вы можете использовать свой первый запрос для отображения результатов Figure2, но вам нужно изменить свой код PHP в соответствии с этим.

Смежные вопросы