Avatar billede theh Nybegynder
11. marts 2008 - 12:54 Der er 9 kommentarer og
1 løsning

Udtræk af én record fra hver kategori

Jeg skal lave et udtræk fra denne tabel kaldet Galleri:

ID***ArtsID***Filnavn
1****1*******aaa.jpg
2****1*******bbb.jpg
3****2*******ccc.jpg
4****3*******ddd.jpg
5****3*******eee.jpg
6****3*******fff.jpg
7****4*******ggg.jpg
8****4*******hhh.jpg

således at der kommer én jpgfil for hver ArtsID (ID skal også med):

ID***ArtsID***Filnavn
1****1*******aaa.jpg
3****2*******ccc.jpg
4****3*******ddd.jpg
7****4*******ggg.jpg

Det burde være simpelt, vl jeg mene, men jeg er alligevel kørt sur i det, fordi jeg ikke får ID med. Det nærmeste jeg kommer er uden ID:

SELECT DISTINCT ArtsID,
                          (SELECT    TOP (1) Filnavn
                            FROM          Galleri AS t2
                            WHERE      (ArtsID = t1.ArtsID)) AS Filnavn
FROM        Galleri AS t1


Kan nogen hjælpe?

Hilsen Thomas
Avatar billede petersen7913 Forsker
11. marts 2008 - 13:08 #1
Hvordan ved du, at det er ArtsID=1 og aaa.jpg du skal bruge og ikke ArtsID=! og bbb.jpg?????
Avatar billede theh Nybegynder
11. marts 2008 - 15:04 #2
Det er ligemeget, det kan være ArtsID=1 og aaa.jpg ELLER ArtsID=1 og bbb.jpg. Det vigtige er at få et enkelt filnavn for hver artsid.
Avatar billede the_party_dog Nybegynder
11. marts 2008 - 17:46 #3
Du vil kun have ét filnavn ud, sammen med artsid? Du vil ikke have alle filer med ud?

SELECT ArtsID, MIN(Filnavn)
FROM Galleri
GROUP BY ArtsID
Avatar billede theh Nybegynder
11. marts 2008 - 17:53 #4
Bare ét filnavn pr artsid, men id skal også med
Avatar billede the_party_dog Nybegynder
11. marts 2008 - 17:54 #5
SELECT ID, ArtsID, MIN(Filnavn)
FROM Galleri
GROUP BY ID, ArtsID
Avatar billede theh Nybegynder
11. marts 2008 - 19:02 #6
Nej, den dur ikke, den skriver alle records bare ud
Avatar billede petersen7913 Forsker
11. marts 2008 - 22:01 #7
Jamen det KAN du ikke. Hvis du vil ha' alle felter så får du alle records fordi de er forskellige på filnavn.

Prøv at gå 2-3 skridt tilbage og tænk over HVAD det er du har brug for FØR du begynder på en select .... hvorfor skal du ha' 'bare en eller anden'???? og hvad er kriterierne for 'en eller anden'?

Databaser er for dumme til at kunne vælge for dig ;)

Ellers må du skrive flere detaljer så vi bedre kan forstå den opgave du vil løse.
Avatar billede ldanielsen Nybegynder
11. marts 2008 - 23:21 #8
Sådan:

SELECT MIN(ID) AS ID, ArtsID,
(SELECT Filnavn FROM Galleri WHERE ID = MIN(g1.ID))
FROM Galleri g1
GROUP BY ArtsID
Avatar billede theh Nybegynder
12. marts 2008 - 08:08 #9
Sådan! Tak for hjælpen.

Hilsen Thomas
Avatar billede ldanielsen Nybegynder
15. marts 2008 - 20:18 #10
selv tak
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