Query result mist een paar weken?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

- Ariën  -
Beheerder

- Ariën -

25/02/2013 16:43:43
Quote Anchor link
Ik heb deze query:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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


Maar hoe komt het eigenlijk dat de resultaten als volgt zijn?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
week aantal
---------------
53     4
52     14
51     13
8     3
7     19
6     24
5     18
4     22
3     24
2     29

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 -
 
PHP hulp

PHP hulp

23/11/2024 23:54:48
 
Teun Hesseling

Teun Hesseling

25/02/2013 16:48:20
Quote Anchor link
een jaar heeft 52 weken , dus dan lijkt week 53 haast week 1 te zijn.
 
- Ariën  -
Beheerder

- Ariën -

25/02/2013 16:53:42
Quote Anchor link
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.
 
Ward van der Put
Moderator

Ward van der Put

25/02/2013 16:56:59
Quote Anchor link
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.
 
TJVB tvb

TJVB tvb

25/02/2013 16:57:23
Quote Anchor link
@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.
Gewijzigd op 25/02/2013 16:58:28 door TJVB tvb
 
Kris Peeters

Kris Peeters

25/02/2013 17:02:07
Quote Anchor link
(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.
Gewijzigd op 25/02/2013 17:03:01 door Kris Peeters
 
TJVB tvb

TJVB tvb

25/02/2013 17:12:52
Quote Anchor link
@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)
 
Kris Peeters

Kris Peeters

25/02/2013 17:16:52
Quote Anchor link
o ja, 't is omgekeerd ... sorry.
 
- Ariën  -
Beheerder

- Ariën -

25/02/2013 23:25:52
Quote Anchor link
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.

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.

Ga ik morgen eens uitproberen. Thnx.
Gewijzigd op 25/02/2013 23:26:33 door - Ariën -
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

26/02/2013 07:36:10
Quote Anchor link
Je kan zelf aangeven hoe ket weerknr. bepaald moet worden door een extra argument aan de functie toe te voegen.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
SELECT WEEK('2013-01-07', 3)
-> 2
SELECT WEEK('2013-01-07', 7)
-> 1

Het extra argument is de mode.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.