Query result mist een paar weken?
Code (php)
1
2
3
4
5
6
2
3
4
5
6
SELECT WEEK( `date_posted` ) AS week, COUNT( 1 ) AS aantal
FROM `news`
WHERE `date_posted` >= ( curdate( ) - INTERVAL 10 week )
GROUP BY week
ORDER BY week DESC
LIMIT 0 , 10
FROM `news`
WHERE `date_posted` >= ( curdate( ) - INTERVAL 10 week )
GROUP BY week
ORDER BY week DESC
LIMIT 0 , 10
Maar hoe komt het eigenlijk dat de resultaten als volgt zijn?
Want waar is week 1 eigenlijk dan?
Hij moet gewoon de juiste weken op de juiste volgorde tonen?
Het probleem speelt al vanaf begin dit jaar, maar waarom de sortering zo falend loopt, dat snap ik niet zo.
Gewijzigd op 25/02/2013 16:44:12 door - Ariën -
een jaar heeft 52 weken , dus dan lijkt week 53 haast week 1 te zijn.
Ik meen dat de vorige weken de 2e week, en daarvoor de 3e week zelfs misten. Zeker weten doe ik dit niet, en het is bovendien ook lastig te reproduceren.
Je vraagt toch ook 10 rijen op? In LIMIT [offset,] row_count staat de row_count bij LIMIT 0, 10 op 10 waardoor 53, 52, 51, 8, 7, 6, 5, 4, 3, 2 bij 2 ophoudt.
Afhankelijk van je instellingen krijg je bij het opvragen van de week eventueel een week 0 terug voor de eerste dagen van het jaar die nog onder week 52 of 53 vallen.
@Aar, wat is de reden van je limit? Volgens mij krijg je zonder die limit 11 regels terug. waaronder die week 1
Een verschil van maximaal 1 week zorgt dat je deze week en vorige week krijgt. Daardoor zorgt een verschil van maximaal 10 weken er voor dat je 11 weken krijgt.
Gewijzigd op 25/02/2013 16:58:28 door TJVB tvb
Een jaar duurt langer dan 52 weken.
Week 1 begint bij de eerste maandag van het jaar (ofwel zondag; beide systemen bestaan).
1 januari valt dan meestal in de week vóór week 1, dus week 53 van vorig jaar.
Kijk trouwens ook eens naar de mySQL-functie YEARWEEK().
Dat geeft je bv. de waarde 201314 (2013, week 14).
Als je daarop groupeert, blijft alles binnen het zelfde jaar.
Gewijzigd op 25/02/2013 17:03:01 door Kris Peeters
https://en.wikipedia.org/wiki/ISO_8601#Week_dates voor uitleg over ISO_8601 (wat gebruikt wordt voor de date functie van php)
@Kris,Week 1 begint niet bij de eerste maandag van het jaar. 31 december kan bijvoorbeeld ook week 1 zijn. Zie o ja, 't is omgekeerd ... sorry.
TJVB tvb op 25/02/2013 16:57:23:
@Aar, wat is de reden van je limit? Volgens mij krijg je zonder die limit 11 regels terug. waaronder die week 1
Een verschil van maximaal 1 week zorgt dat je deze week en vorige week krijgt. Daardoor zorgt een verschil van maximaal 10 weken er voor dat je 11 weken krijgt.
Een verschil van maximaal 1 week zorgt dat je deze week en vorige week krijgt. Daardoor zorgt een verschil van maximaal 10 weken er voor dat je 11 weken krijgt.
Dan krijg ik een 0e week. Dat is best vreemd in de uiteindelijke view.
Kris Peeters op 25/02/2013 17:02:07:
Kijk trouwens ook eens naar de mySQL-functie YEARWEEK().
Dat geeft je bv. de waarde 201314 (2013, week 14).
Als je daarop groupeert, blijft alles binnen het zelfde jaar.
Dat geeft je bv. de waarde 201314 (2013, week 14).
Als je daarop groupeert, blijft alles binnen het zelfde jaar.
Ga ik morgen eens uitproberen. Thnx.
Gewijzigd op 25/02/2013 23:26:33 door - Ariën -