Query result mist een paar weken?
Ik heb deze query:
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.
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.
@Teun, een jaar heeft ruim 52 weken. ( 52*7=364 terwijl een jaar 365 of 366 dagen heeft) Daardoor heeft een jaar soms een 53e week.
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.
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
(EDIT: de vorige reactie stond er nog niet)
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.
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
@Kris,Week 1 begint niet bij de eerste maandag van het jaar. 31 december kan bijvoorbeeld ook week 1 zijn. Zie https://en.wikipedia.org/wiki/ISO_8601#Week_dates voor uitleg over ISO_8601 (wat gebruikt wordt voor de date functie van php)
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 -
Je kan zelf aangeven hoe ket weerknr. bepaald moet worden door een extra argument aan de functie toe te voegen.
Het extra argument is de mode.
Het extra argument is de mode.




