-Martin- skrev:
> Se dette kan ikk lade sig gøre i mysql
> Ihvertfald ikke i min version 3.23xxx
Jeg glemmer konstant at mySQL ikke understøtter subselects - det er
en skam.
>>SELECT vareid, COUNT(*) AS antal
>>FROM <tabel>
>>GROUP BY vareid
>>WHERE COUNT(*) > 7
>
> Det ser jo godt ud .. MEEEN tror ikk jeg gik sagt mit
> spørgsmål højt nok ;)
Ikke forstået.
> Mit datetime felt består jo af en dato ... nej hvor sjovt
Det fremgik tydeligt. Ovenstående SQL finder (som jeg skrev)
vareidnumre hvor der er flere end 7 poster i tabellen. Med standard
SQL kan du ikke - SVJV - lave en udvælgelse af de n første poster
for hvert vareid i samme SELECT. Derfor har du brug for først at
finde de numre der indeholder for mange poster, og derefter
behandle dem (slette alt andet end de 7 nyeste).
> Nå men ja, så vil jeg slette alle de felter med samme vareid
> (som jeg kender) også slette alle rækker FORUDEN de 7 nyeste
> rækker (som jo er sat via datetime feltet)
Uden subselects er det ikke så nemt. Jeg tror at min tilgang til
problemet ville være at finde præcis de id-numre der _ikke_ skal
slettes (dvs. de 7 nyeste poster for hvert vareid) og så lave en
sletteforespørgsel der fjerner resten. Hvis de fleste idnumre skal
slettes kan man også overveje at flytte de "rigtige" numre til en
midlertidig tabel, slette hele den oprindelige tabel og så lægge de
gemte poster ind igen.
--
Jens Gyldenkærne Clausen
MF (medlem af FIDUSO -
www.fiduso.dk)
I ovenstående tekst benyttes nyt komma.