Speciel Query

Tags:    databaser

Jeg mangler en query som henter de 10 nyeste records ( ORDER BY Tabel.Tid ) for hvert emne ( Tabel.Type )
Der er mange records for hver type ( hundreder ) men jeg må kun se de 10 nyeste.

Er det muligt at lave en sådan query - jeg kan fint løse problemet ved hjælp af flere queries men skal 'Fodre' en Pivottabel i Excel...

Mojn



9 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 9 karma
Sorter efter stemmer Sorter efter dato
Jeg mangler en query som henter de 10 nyeste records ( ORDER BY Tabel.Tid ) for hvert emne ( Tabel.Type )
Der er mange records for hver type ( hundreder ) men jeg må kun se de 10 nyeste.

Er det muligt at lave en sådan query - jeg kan fint løse problemet ved hjælp af flere queries men skal 'Fodre' en Pivottabel i Excel...

Mojn


Tilføj LIMIT 0, 10 i slutningen af din query.

eks. SELECT * FROM Tabel WHERE Tabel.Type='var' ORDER BY Tabel.Tid DESC LIMIT 0, 10

Der tages forbehold for småfejl, det er trods alt mandag o_O

-
Mvh.
Christian Schultz Knudsen

[Redigeret d. 25/11-04 09:22:48 af Christian Schultz Knudsen]



Jeg mangler en query som henter de 10 nyeste records ( ORDER BY Tabel.Tid ) for hvert emne ( Tabel.Type )
Der er mange records for hver type ( hundreder ) men jeg må kun se de 10 nyeste.

Er det muligt at lave en sådan query - jeg kan fint løse problemet ved hjælp af flere queries men skal 'Fodre' en Pivottabel i Excel...

Mojn


Er det en MSSQL eller Access db så skal du bruge SELECT TOP 10 ..

Mvh. Thomas Lykke Petersen



"SELECT DISTINCT Tabel.Type FROM tbl ORDER BY Tabel.Tid LIMIT 0,10;"

Den virker nogenlunde til mySQL til MS må du selv lige pille lidt ved den..

Den tager en af alle typer, forudsat der findes 10 forskellige typer ??

Sortere dem efter tid og kun de 10 nyeste...


Med venlig hilsen
/Jokke Jensen
www.jj-multimediedesign.dk



Det er lidt mere kompliceret end en TOP :-( Ellers var det nok ikke 200 point.

Jeg skal bruge de 10 nyeste for hver type der findes. Det er måske en subquery der skal til ? Dvs. er der 4 typer får jeg 40 records selvom der er måske 200 records i tabellen.

[Redigeret d. 25/11-04 11:38:28 af Jes Ramsing]



"SELECT DISTINCT Tabel.Type FROM tbl ORDER BY Tabel.Tid LIMIT 0,10;"

Den virker nogenlunde til mySQL til MS må du selv lige pille lidt ved den..

Den tager en af alle typer, forudsat der findes 10 forskellige typer ??

Sortere dem efter tid og kun de 10 nyeste...


Med venlig hilsen
/Jokke Jensen
www.jj-multimediedesign.dk


brug TOP og lav en UNION per type ;)

Mvh. Thomas Lykke Petersen



Altså er svaret at queryen ikke kan laves automatisk men skal opbygges via kode for at finde de 10 nyeste for hver type der findes i databasen ?

TOP og UNION er jo en mulig løsning hvis man først laver en select distinct type og så bygger en sql kommando med UNION ALL ( f.eks. )

Mojn mojn





SELECT DISTINCT Tabel.Type" skulle da gerne kun tage én af hver Tabel.Type..


Med venlig hilsen
/Jokke Jensen
www.jj-multimediedesign.dk



Altså er svaret at queryen ikke kan laves automatisk men skal opbygges via kode ...


Nej, man kan godt gøre det i ren SQL, se fx. følgende indlæg fra dk.edb.database usenet-gruppen:
http://groups-beta.google.com/group/dk.edb.database/msg/60b72255def5ae10?dmode=source

Hvis man ikke kan benytte VIEWs, så kan løsningen omskrives til at benytte sub-queries.



Det ligner en løsning - jeg roder videre ved lejlighed.
Takker og Mojn



t