Toon posts:

[SQL/MYSQL] LIMIT Raar probleempje *

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik loop tegen het volgende probleem aan:
In mysql (4.1)

Bij de volgende query krijg ik als laatste item record nr 72 in mijn result:
SQL:
1
2
3
4
5
6
SELECT * FROM CMS_PHOTOBOOK_PHOTO inner join CMS_SITE_PHOTO_DETAIL on 
(CMS_PHOTOBOOK_PHOTO.CMS_ID=CMS_SITE_PHOTO_DETAIL.CMS_ID and 
CMS_PHOTOBOOK_PHOTO.PHOTOBOOK_PHOTO_ID=CMS_SITE_PHOTO_DETAIL.PHOTO_ID) 
where CMS_PHOTOBOOK_PHOTO.PHOTOBOOK_ID = '1' and 
CMS_PHOTOBOOK_PHOTO.PART_ID = 1 and CMS_PHOTOBOOK_PHOTO.CMS_ID = 25 
LIMIT 48,24

maar als ik
SQL:
1
2
3
4
5
6
SELECT * FROM CMS_PHOTOBOOK_PHOTO inner join CMS_SITE_PHOTO_DETAIL on 
(CMS_PHOTOBOOK_PHOTO.CMS_ID=CMS_SITE_PHOTO_DETAIL.CMS_ID and 
CMS_PHOTOBOOK_PHOTO.PHOTOBOOK_PHOTO_ID=CMS_SITE_PHOTO_DETAIL.PHOTO_ID) 
where CMS_PHOTOBOOK_PHOTO.PHOTOBOOK_ID = '1' and 
CMS_PHOTOBOOK_PHOTO.PART_ID = 1 and CMS_PHOTOBOOK_PHOTO.CMS_ID = 25 
LIMIT 72,24

deze doe krijg ik ook record nr 72 in mijn result (als eerste)
dat moet volgens mij niet mogen?

Het gaat alleen fout als mijn dataset kleiner is als (72+24)=96 de paging gaat wel goed tussen bijv.
LIMIT 0,24 en LIMIT 24,24

is het resultaat dat ik krijg correct of niet? wat doe ik verkeerd?

ps. zie nu dat ik de titel eigellijk "[SQL/MYSQL] LIMIT raar probleempje" had moeten nimen

[ Voor 5% gewijzigd door Verwijderd op 05-01-2007 16:24 ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op vrijdag 05 januari 2007 @ 13:36:
deze doe krijg ik ook record nr 72 in mijn result (als eerste)
dat moet volgens mij niet mogen?
Waarom niet? Je specificeert toch zelfs vanaf record 72 te willen hebben?
Verwijderd schreef op vrijdag 05 januari 2007 @ 13:36:
Het gaat alleen fout als mijn dataset kleiner is als (72+24)=96 de paging gaat wel goed tussen bijv.
LIMIT 0,24 en LIMIT 24,24
Je eerste page is dus 0 t/m 23, je tweede page 24 t/m 47, je derde is 48 t/m 71 etc. Dat zijn 24 records per keer.
The offset of the initial row is 0 (not 1):
Als je moeite hebt hiermee dan helpt het doorgaans om het even te visualiseren:
Afbeeldingslocatie: http://tweakers.net/ext/f/c6fea4ecc42d042629a5573938835a33/full.gif

[ Voor 17% gewijzigd door RobIII op 05-01-2007 13:48 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
Volgens mij gaat er echt iets fout:

de set is 92 records groot

pagina 1 : 0-23 = 24
pagina 2 : 24-47 = 24
pagina 3 : 48-71 = 24
pagina 3 : 72-92 = 20

is in totaal de 92records.

maar toch waren de records 71 en 72 daar dezelfde. Na wat verder zoeken miste in in de laatste 20
een ander record. toen ik die verwijderde werkte het ineens helemaal.

Kan het iets met de index op de tabel te maken hebben? dat die niet bijgewerkt was?

ik vind het raar maar het lijkt nu opgelost.

[ Voor 3% gewijzigd door Verwijderd op 05-01-2007 16:24 ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op vrijdag 05 januari 2007 @ 14:09:
Volgens mij gaat er echt iets fout:
Volgens mij niet ;)

Als jij geen "Order by" clause gebruikt is in pricipe de volgorde van de records "undefined" en kan het dus goed zijn dat je bij het ophalen van een andere "page" perongeluk een keer een "vorig" record terugkrijgt. Je zult dus zowieso een order by moeten gebruiken.

Overigens mag je die groet onder aan je posts achterwege laten, daar doen wij hier @GoT niet aan. We groeten elkaar impliciet al de hele dag ;)

[ Voor 19% gewijzigd door RobIII op 05-01-2007 16:14 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
Misschien is dat het probleem dan jah. Dat ik geen order gebruik.
en ik zal niet meer de groeten doen :)