Avatar billede michael_c Nybegynder
10. februar 2007 - 15:08 Der er 5 kommentarer

sortering i group by

Jeg har en query som ser ud som nedenstående:

SELECT * FROM grafik.annoncebank a group by a.adsmart_nr,a.publication,a.heading,a.status_id,a.adid order by lastmoddt desc

Det  jeg gerne vil have sorteret er indholdet i selve grupperingen, altså de enkelte records der ligger i den enkelte grupppe, for på den måde at udtrække den nyeste opdaterede record.

Kan jeg gøre det i sql, elle er jeg nødt til at lave en procedure i php som gør det

De bedste hilsner
Michael
Avatar billede kjulius Novice
11. februar 2007 - 16:37 #1
Jeg ved ikke om jeg har forstået det rigtigt, men hvis du ønsker de rækker, som inden for hver gruppering er blevet opdateret sidst, kunne en SQL som nedenstående måske være svaret:

SELECT *
FROM grafik.annoncebank a
WHERE lastmoddt = (SELECT MAX(lastmoddt) FROM grafik.annoncebank WHERE adsmart_nr = a.adsmart_nr AND heading = a.heading AND status = a.status AND adid = a.adid)

Det kræver dog, at din version af MySQL understøtter subselects, hvilket den gør fra version 4.1
Avatar billede michael_c Nybegynder
12. februar 2007 - 13:39 #2
Hej Det virker sådan set udmærket, men med de datamængder jeg opererer med, er det en ekstrem langsom løsning.
Avatar billede kjulius Novice
12. februar 2007 - 18:57 #3
Har du prøvet at oprette et index med felterne i subselectens WHERE del? De vil sandsynligvis i praksis blive opfattet som et inner join.
Avatar billede kjulius Novice
12. februar 2007 - 19:08 #4
Måske kunne du også prøve noget lignende dette:

SELECT a.*
FROM grafik.annoncebank a
INNER JOIN (
  SELECT adsmart_nr, heading, status, adid, MAX(lastmoddt) AS SidstÆndret
  FROM grafik.annoncebank
  GROUP BY adsmart_nr, heading, status, adid
) AS b ON a.adsmart_nr = b.adsmart_nr AND a.heading = b.heading AND a.status = b.status AND a.adid = b.adid AND a.lastmoddt = b.SidstÆndret
Avatar billede kjulius Novice
02. august 2007 - 18:18 #5
Hvis du ikke har flere spørgsmål/tilbagemeldinger skal der vist bare lukkes. For det tilfældes skyld, at du mener jeg fortjener et par point, lægger jeg et svar. :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester