[mySQL]LIMIT schiet tekort

Pagina: 1
Acties:

  • maurad3r
  • Registratie: Oktober 2004
  • Laatst online: 06-05 17:06
Allo mensen,

Ik zit met een probleem, limit schiet tekort.. en ik kan geen alternatief vinden voor mijn probleme in mysql.

Het probleem is het volgende:
Ik wil de 5 laatste metingen van iets ophalen, bij iedere meting horen een x aantal resultaten, deze haal ik dmv een join op. Nu kan ik wel alle metingen ophalen maar ik kan nie tde laatste 5 metingen apart krijgen. Een Limit wrekt niet omdat ik niet weet hoeveel resultaten er bij iedere meting horen.

Ik hoop dat het duidelijk zat is,
Iemand die me hiermee kan helpen ?

  • Gert
  • Registratie: Juni 1999
  • Laatst online: 05-12-2025
Misschien dat het ook wel beter/efficienter kan maar ik neem aan dat iets als het volgende zou moeten werken.
code:
1
2
3
4
5
6
7
8
select meting, resultaat 
from metingtabel 
  inner join resultaat tabel on iets = ietsanders
where meting in (
  select meting 
  from metingtabel 
  limit 0,5
)

  • Stamgastje
  • Registratie: April 2003
  • Laatst online: 02-02-2020
Kleine note: bovenstaande werkt alleen in mysql vanaf versie 4.1. Eerdere versies ondersteunen helaas geen subqueries.

  • maurad3r
  • Registratie: Oktober 2004
  • Laatst online: 06-05 17:06
mm, mijn host draait deze versie niet, en dit is dus geen oplossing.
Ik heb het nu opgelost door de ids van die 5 in een andere query op te halen.

Toch zou ik graag willen weten hoe het wel zou moeten ?

  • odysseus
  • Registratie: Augustus 2000
  • Laatst online: 00:21

odysseus

Debian GNU/Linux Sid

Het is waarschijnlijk de doodsteek voor enige vorm van performance, maar kan je je resultaten niet andersom sorteren en dan gewoon de eerste vijf waardes als resultaat nemen?

Leven is het meervoud van lef | In order to make an apple pie from scratch, you must first create the universe.


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Ik denk dat het het makkelijkst voor je is als je dit opsplitst in twee queries, aangezien je geen subqueries kunt gebruiken. Je zal dan eerst de 5 id's op moeten halen die je nodig hebt, en dan een query als deze moeten opstellen:
code:
1
2
3
4
select meting, resultaat 
from metingtabel 
  inner join resultaat tabel on iets = ietsanders
where meting in (1, 2, 3, 4, 5)

(Zelfde als Gert al zegt dus, maar dan opgesplitst. :))

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Maurad3r schreef op zaterdag 18 juni 2005 @ 21:51:
mm, mijn host draait deze versie niet, en dit is dus geen oplossing.
Ik heb het nu opgelost door de ids van die 5 in een andere query op te halen.

Toch zou ik graag willen weten hoe het wel zou moeten ?
Door het gebrek aan subqueries kan dit in principe niet in 1 query in mysql ( < 4.1). Je kan het wel zonder data op te halen en weer terug te stoppen in je queries dmv een temporary table, dan wordt het zoiets:

code:
1
2
3
4
5
CREATE TEMPORARY TABLE meting_result AS
   SELECT * FROM metingtabel ORDER BY tijd DESC LIMIT 5;

SELECT * FROM meting_result
  JOIN metingresultaten ON meting_result.id = metingresultaten.metingid

  • maurad3r
  • Registratie: Oktober 2004
  • Laatst online: 06-05 17:06
'Ik heb het nu opgelost door de ids van die 5 in een andere query op te halen.'

Zo heb ik het dus idd opgelost, ik blijf het echter omslachtig vinden en raar dat het niet op een andere manier kan. Is dit een van de gebrekken van mySQL ?, of heeft iedere SQL dit ?

Verder.. allemaal bedankt

Verwijderd

Maurad3r schreef op zondag 19 juni 2005 @ 00:16:
'Ik heb het nu opgelost door de ids van die 5 in een andere query op te halen.'

Zo heb ik het dus idd opgelost, ik blijf het echter omslachtig vinden en raar dat het niet op een andere manier kan. Is dit een van de gebrekken van mySQL ?, of heeft iedere SQL dit ?

Verder.. allemaal bedankt
Een antwoord daarop staat in de derde posting op dit topic.

Lezen is een vak :)

  • Blorgg
  • Registratie: Juni 2001
  • Niet online
Het is al een paar keer genoemd hoor, MySQL ondersteunt pas subqueries vanaf versie 4.1 :)
Pagina: 1