Jika Anda menggunakan sql server 2005+. Kemudian Anda dapat melakukan seperti ini:
SELECT
JobsTagMap.JobID,
STUFF
(
(
SELECT
',' +Title
FROM
Tags
WHERE
Tags.TagID=JobsTagMap.TagID
FOR XML PATH('')
)
,1,1,'') AS Title
FROM JobsTagMap
EDIT
Karena Anda tidak menunjukkan kepada kami struktur tabel dan data dalam tabel yang berbeda. Itu agak sulit untuk diketahui. Jadi saya berasumsi bahwa struktur tabel Anda terlihat seperti ini:
CREATE TABLE JobsTagMap
(
JobID INT,
TagID INT
)
CREATE TABLE Tags
(
TagID INT,
Title VARCHAR(100)
)
Dengan data ini:
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')
Jika Anda mendapatkan data itu, Anda menunjukkan JobID
tidak boleh unik. Anda mungkin memiliki Job
meja di suatu tempat di mana itu unik. Jika Anda hanya ingin menggunakan tabel yang Anda tampilkan ini, Anda perlu melakukan sesuatu seperti ini:
;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
Ini akan memberi Anda hasil ini:
1 1 1 Tag1,Tag2
1 2 2 Tag2,Tag5,Tag9
Jadi di masa depan selalu tampilkan struktur tabel dan itu data . Itu akan memberi Anda jawaban yang lebih baik