Wenn Sie SQL Server 2005+ verwenden. Dann können Sie so vorgehen:
SELECT
JobsTagMap.JobID,
STUFF
(
(
SELECT
',' +Title
FROM
Tags
WHERE
Tags.TagID=JobsTagMap.TagID
FOR XML PATH('')
)
,1,1,'') AS Title
FROM JobsTagMap
BEARBEITEN
Weil Sie uns die Tabellenstruktur und die Daten in den verschiedenen Tabellen nicht gezeigt haben. Es war ein bisschen schwer zu wissen. Ich gehe also davon aus, dass Ihre Tabellenstruktur in etwa so aussieht:
CREATE TABLE JobsTagMap
(
JobID INT,
TagID INT
)
CREATE TABLE Tags
(
TagID INT,
Title VARCHAR(100)
)
Mit diesen Daten:
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')
Wenn Sie diese Daten erhalten, zeigen Sie die JobID
an kann nicht einzigartig sein. Möglicherweise haben Sie einen Job
Tisch irgendwo, wo es einzigartig ist. Wenn Sie nur diese angezeigte Tabelle verwenden möchten, müssen Sie Folgendes tun:
;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
Dadurch erhalten Sie dieses Ergebnis:
1 1 1 Tag1,Tag2
1 2 2 Tag2,Tag5,Tag9
Also in Zukunft immer welche Tabellenstruktur anzeigen und es Daten . So erhalten Sie bessere Antworten