Afgaande op uw zoekopdracht is er ook order_id
veld in uw order_products
tabel die u niet vermeldde in de tabeldefinitie. Uw vraag zou er dan als volgt uit moeten zien:
SELECT c.name AS category_name,
SUM( s.subtotal ) AS amt,
GROUP_CONCAT( CONCAT(s.name, ' - ', s.subtotal ) SEPARATOR ', ' ) AS subtotals
FROM
product_category c
JOIN
( SELECT op.category, op.name, sum(op.qty*op.unit_price) AS subtotal
FROM order_products op
JOIN orders o ON o.id = op.order_id
WHERE o.date > '2012-03-31'
GROUP BY op.category, op.name ) s
ON s.category = c.id
GROUP BY c.name
Je db-schema is echter nogal raar, de besteltabel ziet eruit alsof deze kan worden verwijderd en die datum kan worden verplaatst naar order_products, omdat je voor elke order_products-rij een verwijzing hebt naar de besteltabel. Meestal is het andersom - er zijn veel bestellingen voor elk product waarnaar wordt verwezen door het veld product_id in de tabel met bestellingen. Ook de datumkolom in bestellingen is van het type varchar - waarom geen datum of datetime?