Si vous utilisez sql server 2005+. Ensuite, vous pouvez faire comme ceci :
SELECT
JobsTagMap.JobID,
STUFF
(
(
SELECT
',' +Title
FROM
Tags
WHERE
Tags.TagID=JobsTagMap.TagID
FOR XML PATH('')
)
,1,1,'') AS Title
FROM JobsTagMap
MODIFIER
Parce que vous ne nous avez pas montré la structure des tables et les données des différentes tables. C'était un peu difficile à savoir. Je suppose donc que la structure de votre table ressemble à ceci :
CREATE TABLE JobsTagMap
(
JobID INT,
TagID INT
)
CREATE TABLE Tags
(
TagID INT,
Title VARCHAR(100)
)
Avec ces données :
INSERT INTO JobsTagMap
VALUES(1,1),(1,2),(2,2),(2,4),(2,5)
INSERT INTO Tags
VALUES(1,'Tag1'),(2,'Tag2'),(3,'Tag2'),(4,'Tag5'),(5,'Tag9')
Si vous obtenez ces données, vous affichez le JobID
ne peut pas être unique. Vous pourriez avoir un Job
table quelque part où elle est unique. Si vous souhaitez simplement utiliser le tableau que vous montrez, vous devez faire quelque chose comme ceci :
;WITH CTE
AS
(
SELECT
ROW_NUMBER() OVER(PARTITION BY JobID ORDER BY JobID) AS RowNbr,
JobsTagMap.*
FROM
JobsTagMap
)
SELECT
*,
STUFF
(
(
SELECT
',' +Title
FROM
Tags
JOIN JobsTagMap
ON Tags.TagID=JobsTagMap.TagID
WHERE
JobsTagMap.JobID=CTE.JobID
FOR XML PATH('')
)
,1,1,'') AS Title
FROM
CTE
WHERE
CTE.RowNbr=1
Cela vous donnera ce résultat :
1 1 1 Tag1,Tag2
1 2 2 Tag2,Tag5,Tag9
Donc, à l'avenir, montrez toujours quelle structure de table et ses données . Cela vous donnera de meilleures réponses