Jimmy wrote:
> "Jesper Brunholm" <nospam@brunholm-scharff.dk> wrote in message
> news:3de142f1@news.wineasy.se...
>>OK: 14. november i denne gruppe skrev Nis Jørgensen i et indlæg
> (<
http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&oe=UTF-8&threadm=3dcd9a
> 33%241%245756%24ba624c82%40nntp04.dk.telia.net&rnum=3&prev=/groups%3Fq%3Dmys
> ql%2B%2522vise%2Bens%2Bposter%2522%26hl%3Den%26lr%3D%26ie%3DUTF-8%26oe%3DUTF
> -8%26selm%3D3dcd9a33%25241%25245756%2524ba624c82%2540nntp04.dk.telia.net%26r
> num%3D3>)
>
> Vildt nok du fik den med uden den knækkede!
(kodeordet er krokodillenæb
> Der er 28.000 rækker i den jeg laver operationer på nu og den bliver jo ikke
> mindre.
> Den tygger på SQL'en i 3 minutter hvorefter IE siger, at siden ikke kan
> vises.
Hmm - umiddelbart ville jeg nok prøve at lave en mindre tabel og teste
på - så det har jeg gjort. Så kunne jeg selv prøve at se resultatet lidt
an. Der er en grund til at jeg omhyggeligt quotede Nis for at have
postet koden - _jeg_ har ikke udtænkt den
> Har jeg anvendt SQL'en korrekt:
>
> SELECT m1.Profil_ID, m1.Artikel_ID
> FROM line_last_read AS m1 INNER JOIN line_last_read AS m2 ON m1.Profil_ID =
> m2.Profil_ID
> GROUP BY m1.Profil_ID, m1.Artikel_ID
> HAVING count(*)> 1
> LIMIT 0,30
Jeg prøvede med:
SELECT m1.ID, m1.Profil_ID, m1.Artikel_ID
FROM line_last_read AS m1 INNER JOIN line_last_read AS m2 ON m1.Profil_ID =
m2.Profil_ID
GROUP BY m1.Profil_ID, m1.Artikel_ID
HAVING count(*)> 1
LIMIT 0,30
hvor tabellen line_last_read ser sådan ud:
ID Profil_ID Artikel_ID Timestamp
Ret Slet 0 1 2 20021125092341
Ret Slet 1 1 2 20021125092348
Ret Slet 2 1 2 20021125092353
Ret Slet 3 1 2 20021125092414
Ret Slet 4 3 4 20021125092420
Ret Slet 5 3 4 20021125092427
Ret Slet 6 1 5 20021125092432
Ret Slet 7 1 6 20021125092436
Resultatet blev:
ID Profil_ID Artikel_ID
Ret Slet 0 1 2
Ret Slet 6 1 5
Ret Slet 7 1 6
Ret Slet 4 3 4
Dvs: den har nydeligt sorteret de poster ud som ikke skal slettes...
Det ville jeg kunne bruge til en php-løkke, men jeg kan ikke gennemskue
hvordan det kan bruges direkte i mysql.
Næste problem er størrelsen - det må vel optimere hvis vi kan begrænse
til relevante poster (dvs over en uge gamle)?
Alternativt (som nok også er svaret på hvordan det kan bruges) kan man
lave en temporary tabel i SQL
(og jeg må endnu engang ty til en andens post, dennegang Jakob Bock -
Newsgroups: dk.edb.internet.webdesign.serverside.php
Subject: Re: [MySQL] vise ens poster
Date: Sun, 10 Nov 2002 18:21:00 +0100)
CREATE TEMPORARY TABLE tmp ( id SMALLINT UNSIGNED NOT NULL UNIQUE ) TYPE =
HEAP;
INSERT INTO tmp SELECT id FROM x GROUP BY value HAVING COUNT(value) > 1;
SELECT x.* FROM tmp, x WHERE tmp.id = x.id ORDER BY value;
> Jeg slipper i øvrigt nok ikke for to tabeller.
> Det er bare irriterende, at have to tabeller der er stort set ens...
jeps!
mvh
Jesper Brunholm
--
H.C. Andersen-Centret med nyt design: <
http://www.andersen.sdu.dk/>
Phønix - dansk folk-musik fra unge musikere - <
http://www.phonixfolk.dk/>