Ik heb een webshop en wil een overzicht van de orders per week in kaart brengen. Ik heb het voor elkaar gekregen om per week de orders op te tellen met de omzet er bij. In principe niet zo moeilijk allemaal.
Maar nu komt het. In week 36 van 2011 ben ik er mee begonnen en nu zitten we in week 39 van 2012 volgens mij en laat hij de gegevens na week 36 (2012) niet zien. Ik krijg het niet voor elkaar om dat goed uit te lezen. Wie kan me hier mee helpen?
Dit is mijn MySql query:
"SELECT `content`, WEEK(`updated_at`) AS week, YEAR(`updated_at`) AS jaar, COUNT(`id`) as id, SUM(`price_total`) as totaal FROM cart WHERE order_status = 'completed (payed)' or order_status = 'completed (not payed)' GROUP BY week ORDER BY jaar DESC, week DESC"
Dat geeft een waarde van bv. "201239" (= jaar 2012, week 39)
YEARWEEK zal unieke weken leveren.
Als je "GROUP BY week" doet, zoals je nu doet, wordt geen rekening gehouden met het jaar. Dan worden bv. de records van week 36 van 2011 opgeteld bij die van week 36 van 2012
Oei, een database die niet genormaliseerd is. In principe probeert men te vermijden dat meerdere gegevens in 1 veld komen. Anders kom je tot ... dit soort problemen.
Hoe kom je tot de relatie 7 => hout?
Een andere tabel in de DB waar id=7 een waarde "hout" bevat?
Je wordt dan bijna verplicht tot 1 van twee mogelijkheden:
1) alle records van die categorieën sowieso laden en in een array steken.
2) in we while-lus - waar je de records fetcht - telkens de gekoppelde waarden opnieuw ophalen, met mysql_query(...)
Als iemand iets beter weet: zeg het vooral, he.
Of 1) of 2) beter is, lijkt me vooral af te hangen van de verhouding (aantal categorieën / aantal records die getoond worden). Maar waarschijnlijk is 1) toch het meest geschikt.