[mysql] limit by group

Pagina: 1
Acties:

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Ik heb een aantal resultaten:

1212 aaaa gftegdgfasw
1212 aaaa gfteaafgser
1212 aaaa tfgeafgsert
1212 aaaa atasdfeaseh
1212 aaaa sdfteasfjki
1212 bbbb tesadfasaui
1212 bbbb teafdssfkuy
1212 bbbb gftegdgfasw
1212 bbbb gfteaafgser
1212 bbbb tfgeafgsert
1212 cccc atasdfeaseh
1212 cccc sdfteasfjki
1212 cccc tesadfasaui
1212 cccc teafdssfkuy

a.s.o. ..
Maar nu wil ik per {aaab|bbbb|cccc} een limit instellen;
code:
1
limit 0,15

gaat niet werken, omdat ik dan eerst ALLE resultaten van aaaa terugkrijg.
Heeft iemand een id?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 11:21

Janoz

Moderator Devschuur®

!litemod

Kan niet op deze manier...

De enige oplossing die ik nu ff zo snel kan verzinnen is per categorie een query met een limit te doen...

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Dit kan alleen met een sub-query en dat kan MySQL volgens mij nog niet aan.

Hierbij de oplossing
code:
1
2
3
4
5
6
7
8
9
select t1.code
    ,t1.omschrijving
from   tabel t1
where &limiet > (select count (*)
             from   tabel t2
             where  t2.code=t1.code
             and    t2.omschrijving<t1.omschrijving
            )
order by t1.code

Uitleg:
Selecteer uit de tabel (t1) alle records waarvoor geldt dat er minder dan de limiet records boven je staan voor die code.
Ik heb omschrijving als selectieveld voor het tellen gekozen, maar je kan ook een datetime kolom hiervoor gebruiken. Dit is waarschijnlijk zelfs beter. De omschrijvingen kunnen gelijk zijn aan elkaar en dan klopt het resultaat niet.
suc6