Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ID NAME
- 1 page 1
- 2 page 2
- 3 page 3
- 4 page 4
- ID NAME
- 1 tag 1
- 2 tag 2
- 3 tag 3
- 4 tag 4
- ID PAGEID TAGID
- 1 2 1
- 2 2 3
- 3 3 4
- 4 1 1
- 5 1 2
- 6 1 3
- ID NAME TAGS
- 1 page 1 tag 1, tag 2, tag 3
- 2 page 2 tag 1, tag 3
- 3 page 3 tag 4
- 4 page 4
- SELECT pagetag.id, page.name, group_concat(tag.name) FROM
- (page LEFT JOIN pagetag on page.id = pagetag.pageid)
- LEFT JOIN tag on pagetag.tagid = tag.id
- group by page.id;
- SELECT page_tag.id, page.name, group_concat(tags.name) FROM tag,page, page_tag
- where page_tag.page_id = page.page_id AND page_tag.tag_id = tag.id;
- SELECT page.id AS id, page.name AS name, tagstable.tags AS tags FROM page
- LEFT OUTER JOIN
- (SELECT pagetag.pageid, GROUP_CONCAT(distinct tag.name) as tags FROM tag INNER JOIN pagetag ON tagid=tag.id GROUP BY pagetag.pageid) AS tagstable ON tagstable.pageid=page.id GROUP BY page.id
- id name tags
- ---------------------------
- 1 page 1 tag2,tag3,tag1
- 2 page 2 tag1,tag3
- 3 page 3 tag4
- 4 page 4 NULL
- select ID as 'PageId', Name as 'PageName', null as 'Tags'
- into #temp
- from [PageTable]
- declare @lastOp int
- set @lastOp = 1
- while @lastOp > 0
- begin
- update p
- set p.tags = isnull(tags + ', ', '' ) + t.[Tagid]
- from #temp p
- inner join [TagTable] t
- on p.[PageId] = t.[PageId]
- where p.tags not like '%' + t.[Tagid] + '%'
- set @lastOp == @@rowcount
- end
- select * from #temp
- select COALESCE(pagetag.id, '') AS id ...
Add Comment
Please, Sign In to add comment