2013-11-12 2 views
0

Я пытаюсь выяснить, как определить общий объем продаж для сотрудника с использованием MySQL. В БД есть 4 таблицы, которые помогут определить общий объем продаж. Мне удалось создать запрос, который выбирает все необходимые таблицы для вычисления Sales Total.Расчет общих продаж из нескольких таблиц MySQL

Запрос:

SELECT employees.eno, employees.ename, orders.ono, orders.eno, 
    parts.pno, parts.price,odetails.ono, odetails.pno, odetails.qty 
FROM test.employees, test.parts, test.orders, test.odetails 
WHERE employees.eno = orders.eno AND parts.pno = odetails.pno 

Это приходит с таблицы, которая отображает имя сотрудника, пункт, цена это продается в. Я не знаю, куда идти отсюда. И любая помощь была бы очень признательна! Я не уверен, поможет ли хранимая процедура, и я мог бы назвать ее в программе Java для распечатки результатов. Просто очень смущаюсь здесь. Любая помощь будет оценена по достоинству. Спасибо!

+0

Какой выход вы хотите? – Flimzy

+0

Вы можете использовать 'SUM' и умножить на свое поле количества, чтобы получить общее количество. Проблема с 'sum' заключается в том, что она также сгруппировала ваши результаты, и в этом случае вы можете« присоединить »запрос к себе, чтобы возвращать записи, если хотите, чтобы все эти данные также были. Это я был вами, я бы выбрал все записи и выполнил отдельный запрос, который ** только ** выбирает общий объем продаж (если вы не хотите, чтобы ваши результаты были сгруппированы) –

+0

Я хочу в основном найти, у какого сотрудника есть максимально высокий общий объем продаж в зависимости цена. Цена * Кол-во. Просто не уверен, как это сделать. – Bob

ответ

1

Try:

SELECT employees.eno, employees.ename, SUM(parts.price * odetails.qty) as TotalSales 
FROM test.employees 
INNER JOIN test.orders 
ON empoyee.eno = orders.eno 
INNER JOIN test.odetails 
ON orders.ono = odetails.ono 
INNER JOIN test.parts 
ON odetails.pno = parts.pno 
GROUP BY employees.eno, employees.ename 
+0

Я люблю тебя. Спасибо. – Bob

+2

Без проблем @Bob. Я просто надеюсь, что моя жена не увидит ваш комментарий здесь ... lol. Счастливое кодирование и Бог благословит! – Edper

1

работа.

SELECT employees.ename, COUNT(employees.ename), (COUNT(employees.ename) * parts.price) FROM test.employees INNER JOIN (orders, parts) ON (employees.eno = orders.eno AND parts.pno = odetails.pno) 
+0

Будет возвращен общий ** номер ** продаж (количество записей), который вы могли бы затем добавить итоговые суммы с кодом на стороне сервера, чтобы получить общую сумму, или вам нужно будет выбрать 'SUM' также –

+0

Хорошо, поэтому Я немного изменил свой sql-скрипт, и это дало мне правильное количество продаж. Но у меня 4 сотрудника в БД, и я хочу выяснить объем продаж для каждого из них, а затем рассчитать прибыль, выполнив цену продажи * товара. _SELECT COUNT (*) FROM test.employees INNER JOIN (заказы, детали, odetails) ON (employees.eno = orders.eno AND parts.pno = odetails.pno) _ – Bob

0

Вы должны использовать JOIN с, чтобы объединить все ваши таблицы вместе в соответствующие результаты. Вот пример из того, что я могу сказать от вашего запроса структуры/баз данных, которая будет возвращать каждый заказ, вступив в детали заказа, часть информации и сотрудники информацию:

SELECT 
* 
FROM test.orders O 
LEFT JOIN test.odetails OD ON OD.pno = O.ono 
LEFT JOIN test.employees E ON E.eno = O.eno 
LEFT JOIN test.parts P ON P.pno = OD.pno 

Отсюда, если вы хотите, чтобы получить полный пер сотрудник, вы могли бы сделать что-то вроде этого:

SELECT 
E.eno, 
SUM(OD.qty * P.price) AS employee_total 
... 
GROUP BY E.eno 

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

Затем можно добавить:

ORDER BY employee_total ASC -- or DESC... 

Чтобы заказать от низшего к высшему, или наоборот.

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