2010-07-07 2 views
0

У меня есть таблица продуктов с полевыми продуктами, категориями и стоимостью типа varchar, varchar и decimal.Группировка полей по категориям и упорядочение по дате и вычисление из другой таблицы

У меня тогда есть таблица продаж, с клиентом полей, именем продукта, количеством, стоимостью и saledate, типа varchar, varchar, int, decimal и date.

У меня также есть таблица покупок с полями, купленными, стоимостью, количеством и покупкой, типов date, decimal, varchar и varchar.

В моей таблице продаж поле затрат для данной записи автоматически умножается на количество.

Например, если пиво стоит 10, а в записи для продажи количества пива составляет 2, стоимость для этой записи будет автоматически 20.

То, что я хочу сделать, это вернуть результат все продажи и покупки автоматически группируются.

Например, если у меня есть следующие данные в таблице продаж:

productname - quantity - cost- saledate 

beer   2   20 2010-07-10 
beer   3   50 2010-07-11 

And in the purchases table: 

purchasedate - cost - quantity - purchase 
2010-07-09  20  2   straws 

Я хочу, чтобы показать следующий вывод

Всего продаж за текущий месяц:

productname - quantity - cost 

beer   5   50 

Всего закупки за текущий месяц

purchasedate - cost - quantity - purchase 
2010-07-09  20  2   straws 

я что-то вроде следующего: пытаясь

Select category,SUM(Sales.Quantity),SUM(Sales.Quantity*cost) cost from 
sales,products WHERE sales.product=products.name 
AND category='food' AND month(date_field) = month(getdate()) group by category 

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

Должен ли я включать первоначальную стоимость из таблицы продуктов, чтобы делать то, что мне нужно?

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

ответ

0

Если я получу ваше право, это должно быть

Общий объем продаж за текущий месяц:

SELECT s.productname, SUM(s.quantity), SUM(s.cost) 
FROM sales AS s 
LEFT JOIN products AS p ON s.productname = p.name 
WHERE MONTH(s.saledate) = MONTH(NOW()) AND p.category = 'food' 
GROUP BY s.productname 

Но я не вижу подключение к таблице покупки

+0

, что, кажется, его в точку! так просто ... – 2010-07-07 23:13:13

+0

Ahh, я думаю, должно быть подключение к таблице продуктов. Таблица продуктов и таблица продаж связаны через поле productname (далеко не идеальное, я знаю), и я хочу показывать только определенные продажи для определенной категории из таблицы продуктов. – 2010-07-07 23:28:58

+0

Я только что отредактировал запрос выше. Теперь таблица продуктов соединена. – JochenJung

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