Er is een order, aan deze order kunnen meerdere orderregels hangen (bijv. een t-shirt). Aan iedere orderregel kunnen vervolgens weer meerdere eigenschappen hangen (bijv. de kleur of maat van het shirt).
Daarnaast kunnen er nog 1 of meerder orderopties aan de order hangen (bijv. extra's bij de orders die niet op de orderregels thuis horen, maar waar wel een prijs aan hangt).
Nu heb ik het eerste stuk al wel rond gekregen middels subqueries.
SELECT
`order_id`,
`betaalmethode_prijs`,
... (etc.)
FROM
orders
LEFT JOIN (
SELECT
`order_id`
`order_regel_id`,
`artikel_prijs`,
... (etc.)
FROM
order_regels
LEFT JOIN (
SELECT
`order_regel_id`
`order_regel_eigenchap`,
`eigenschap_prijs`,
... (etc.)
FROM
order_regel_eigenschappen
) AS ore
USING `order_regel_id`
) AS or
USING `order_id`
GROUP BY `order_id`
M.b.v. SUM() krijg ik daar mooi het totaal van een order mee. Echter nu wil ik dus ook de zijtak toevoegen. Ik dacht dit te kunnen doen door simpelweg een extra LEFT JOIN toe te voegen:
LEFT JOIN (
SELECT
`order_id`,
`order_optie_id`,
... (etc.)
FROM
order_opties
) AS oe
USING (`order_id`)
Wat er dan gebeurd is, dat de het totaalbedrag van alles orderopties wordt toegevoegd, maar dan vermenigvuldig met het aantal order regels.
Ik kan er maar niet achterkomen wat er nu fout gaat. Waarschijnlijk (hopelijk!) is het iets heel simpels dat ik over het hoofd zie.
Wie helpt mij het licht te zien ??? ;-)