Hvis du bruger sql server 2005+. Så kan du gøre sådan her:
SELECT JobsTagMap.JobID, STUFF ( ( SELECT ',' +Title FROM Tags WHERE Tags.TagID=JobsTagMap.TagID FOR XML PATH('') ) ,1,1,'') AS TitleFROM JobsTagMap
REDIGER
Fordi du ikke viste os tabelstrukturen og dataene i de forskellige tabeller. Det var lidt svært at vide. Så jeg går ud fra, at din tabelstruktur ser nogenlunde sådan ud:
CREATE TABLE JobsTagMap( JobID INT, TagID INT)CREATE TABLE Tags( TagID INT, Titel VARCHAR(100))
Med disse data:
INSERT INTO JobsTagMapVALUES(1,1),(1,2),(2,2),(2,4),(2,5)INSERT INTO TagsVALUES(1,'Tag1'),( 2,'Tag2'),(3,'Tag2'),(4,'Tag5'),(5,'Tag9')
Hvis du får disse data, viser du JobID
kan ikke være unikt. Du har muligvis et Job
bord et sted, hvor det er unikt. Hvis du bare vil bruge disse tabeller, som du viser, skal du gøre noget som dette:
;WITH CTEAS( SELECT ROW_NUMBER() OVER(PARTITION BY JobID ORDER BY JobID) AS RowNbr, JobsTagMap.* FROM JobsTagMap)SELECT *, TING ( ( SELECT ',' +Titel FRA Tags JOIN JobsTagMap ON Tags .TagID=JobsTagMap.TagID WHERE JobsTagMap.JobID=CTE.JobID FOR XML PATH('') ) ,1,1,'') SOM TitelFRA CTEWHERE CTE.RowNbr=1
Dette vil give dig dette resultat:
1 1 1 Tag1,Tag21 2 2 Tag2,Tag5,Tag9
Så vis i fremtiden altid hvilken tabelstruktur og det data . Det vil give dig bedre svar