Avatar billede theh Nybegynder
06. marts 2008 - 13:52 Der er 2 kommentarer og
1 løsning

Hjælp til SQL query med to tabeller

Jeg har en artsliste med unik ArtsID opdelt i familier:

Tabel: Artsliste:

ArtsID    FamilieID    Artsnavn

1    3    A
2    3    B
3    3    C
4    3    D
5    4    E
6    4    F
7    7    G
8    7    H

Så har jeg et galleri (unik GalleriID og Filnavn), hvor der kan være flere billeder af samme art:

Tabel: Galleri

GalleriID    ArtsID    Filnavn

1    1    aaa.jpg
2    1    bbb.jpg
3    1    ccc.jpg
4    2    ddd.jpg
5    3    eee.jpg
6    3    fff.jpg   

Jeg vil gerne lave et udtræk pr familie med ét foto pr art, eksempelvis familie 3:

ArtsID    GalleriID    FamilieID    Filnavn    Artsnavn       
1    1    3    aaa.jpg    A
2    4    3    ddd.jpg    B
3    5    3    eee.jpg    C

Er der nogen der kan hjælpe mig med at skrue en SQL query sammen til det ønskede udtræk?
Avatar billede HenrikSjang Nybegynder
07. marts 2008 - 21:43 #1
Hejsa,

Det kan du gøre ved hjælp af en CTE (Common Table Expression) samt ROW_NUMBER() funktionen, med brug af PARTITION BY (find evt. selv noget læsestof om ROW_NUMBER() funktionen på nettet)

Men dette giver dig dit ønskede resultat:

WITH Arts_CTE
AS
(
SELECT
    Artsliste.ArtsId,
    GalleriID,
    FamilieID,
    Filnavn,
    Artsnavn,
    ROW_NUMBER() OVER(PARTITION BY Artsliste.ArtsID ORDER BY Artsliste.ArtsID) AS RowNumber
FROM Artsliste
INNER JOIN Galleri ON Artsliste.ArtsId = Galleri.ArtsID
WHERE FamilieID = 3
)

SELECT ArtsID, GalleriID, FamilieID, Filnavn, Artsnavn
FROM Arts_CTE
WHERE RowNumber = 1
Avatar billede HenrikSjang Nybegynder
07. marts 2008 - 21:45 #2
Hov, det var jo egentlig et svar jeg kom med, og ikke blot en kommentar ;)
Avatar billede theh Nybegynder
08. marts 2008 - 09:34 #3
Mange tak for svaret. Der er nogle nye ting for mig, som jeg lige må kigge på.

Hilsen Thomas
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