Я хотел бы создать ежемесячный отчетЯ хотел бы создать ежемесячный отчет (MySQL)
Tables
Product (id, name, price)
Invoice (id, date)
Invoice_item (id, invoice_id, product_id, quantity)
Образец данных:
product
id | name | price
1 | apple | 10
2 | beer | 20
3 | shoe | 40
invoice
id | date
1 | 2013-01-21
2 | 2013-01-29
3 | 2013-02-02
invoice_item
id | invoice_id | product_id | quantity
1 | 1 | 1 | 2
2 | 1 | 2 | 1
3 | 2 | 3 | 1
4 | 3 | 2 | 2
Я хочу, чтобы этот результат:
product.id | product.name | year(invoice.date) | month(invoice.date) | count | sum
1 | apple | 2013 | 01 | 2 | 20
1 | apple | 2013 | 02 | 0 (or null) | 0 (or null)
2 | beer | 2013 | 01 | 1 | 20
2 | beer | 2013 | 02 | 2 | 40
3 | shoe | 2013 | 01 | 1 | 40
3 | shoe | 2013 | 02 | 0 (or null) | 0 (or null)
Вот код, который я сделал:
SELECT * FROM (
SELECT product prod,
(SELECT date FROM invoice
GROUP BY YEAR(date), MONTH(date)) grpdate) p
LEFT JOIN invoice_item ii
ON ii.product_id = p.id
LEFT JOIN invoice i
ON ii.invoice_id=i.id
GROUP BY p.id, YEAR(date), MONTH(date),
IF(YEAR(date) = YEAR(grpdate), YEAR(date), null),
IF(MONTH(date) = MONTH(grpdate), MONTH(date), null)
Добро пожаловать в SO !! показать некоторые из ваших усилий в этом вопросе и прочитать [FAQ] (http://stackoverflow.com/faq) – 2013-02-14 11:46:50
SELECT * FROM (SELECT product prod, (SELECT date FROM invoice GROUP BY YEAR (дата), MONTH (дата)) grpdate) p LEFT JOIN invoice_item ii ON ii.product_id = p.id LEFT JOIN invoice i ii.invoice_id = i.id GROUP BY p.id, YEAR (дата), MONTH (дата), если (YEAR (date) = YEAR (grpdate), YEAR (дата), null), если (MONTH (дата) = MONTH (grpdate), MONTH (дата), null) – o0ONeoNO0o