Onderstaand SQL-statement moet voor 12 maanden weergeven wat de waarde is van de verkochte dames-artikelen. In werkelijkheid is er in 4 maanden damesartikelen verkocht. De overige 8 maanden moeten weergegeven worden als een lege orderrij.
Onderstaand SQL-statement geeft alleen de 4 maanden terug en niet de overige 8 lege rijen:
SELECT SUM(orders_products.price) FROM orders_products RIGHT JOIN orders ON orders_products.order_id=orders.id
INNER JOIN products ON orders_products.product_id=products.id
INNER JOIN sexes ON sexes.id=products.sexe_id
WHERE sexes.title="Dames"
GROUP BY DATE_FORMAT(orders.created_at, "%M %Y")
ORDER BY orders_products.created_at
Toelichting:
SELECT SUM(orders_products.price)
Geeft de totale waarde van de orders per gegeven maand weer
RIGHT JOIN orders ON orders_products.order_id=orders.id
Zou ervoor moeten zorgen dat er een lege rij geretourneerd wordt, indien die maand geen damesartikelen zijn erkocht.
INNER JOIN products ON orders_products.product_id=products.id
INNER JOIN sexes ON sexes.id=products.sexe_id
Verzorgt de koppeling met de tabel de andere benodigde tabellen
WHERE sexes.title="Dames"
Als ik de WHERE clausule weghaal, dan krijg ik wel keurig de 12 maanden te zien, maar dan weet ik nog niet of er nou wel of geen damesartikelen zijn verkocht.
GROUP BY DATE_FORMAT(orders.created_at, "%M %Y")
Groepeert de orders per maand
Ik heb vanalles geprobeerd, maar ik kom er niet uit. Telkens krijg ik alleen de 4 maanden te zien dat er dames-artikelen zijn verkocht. Wie kan mij vertellen hoe ik de overige 8 maanden als 'lege rij' erbij kan weergeven in 1 SQL-statement?
Onderstaand SQL-statement geeft alleen de 4 maanden terug en niet de overige 8 lege rijen:
SELECT SUM(orders_products.price) FROM orders_products RIGHT JOIN orders ON orders_products.order_id=orders.id
INNER JOIN products ON orders_products.product_id=products.id
INNER JOIN sexes ON sexes.id=products.sexe_id
WHERE sexes.title="Dames"
GROUP BY DATE_FORMAT(orders.created_at, "%M %Y")
ORDER BY orders_products.created_at
Toelichting:
SELECT SUM(orders_products.price)
Geeft de totale waarde van de orders per gegeven maand weer
RIGHT JOIN orders ON orders_products.order_id=orders.id
Zou ervoor moeten zorgen dat er een lege rij geretourneerd wordt, indien die maand geen damesartikelen zijn erkocht.
INNER JOIN products ON orders_products.product_id=products.id
INNER JOIN sexes ON sexes.id=products.sexe_id
Verzorgt de koppeling met de tabel de andere benodigde tabellen
WHERE sexes.title="Dames"
Als ik de WHERE clausule weghaal, dan krijg ik wel keurig de 12 maanden te zien, maar dan weet ik nog niet of er nou wel of geen damesartikelen zijn verkocht.
GROUP BY DATE_FORMAT(orders.created_at, "%M %Y")
Groepeert de orders per maand
Ik heb vanalles geprobeerd, maar ik kom er niet uit. Telkens krijg ik alleen de 4 maanden te zien dat er dames-artikelen zijn verkocht. Wie kan mij vertellen hoe ik de overige 8 maanden als 'lege rij' erbij kan weergeven in 1 SQL-statement?