code_junkie

Concatenating arbitrary number of rows of strings in mysql (hierarchical query)

Nov 11th, 2011
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.95 KB | None | 0 0
  1. root/album1/album2/image1.jpg
  2.  
  3. id parent foldername
  4. 1 NULL root
  5. 2 1 album1
  6. 3 2 album2
  7.  
  8. id parent path foldername
  9. 1 NULL / root
  10. 2 1 /root/ album1
  11. 3 2 /root/album1/ album2
  12.  
  13. DECLARE @FOLDER VARCHAR(200)
  14. DECLARE @TOPID AS INT
  15. DECLARE @MYID As int
  16.  
  17. CREATE TABLE #tmp
  18. (
  19. [id] INT,
  20. [path] VARCHAR(50)
  21. )
  22.  
  23. DECLARE tempCursor CURSOR FOR SELECT id FROM albums ORDER BY id
  24. OPEN tempCursor
  25.  
  26. FETCH NEXT FROM tempCursor INTO @TOPID
  27.  
  28. WHILE @@FETCH_STATUS = 0
  29. BEGIN
  30. SET @FOLDER = ''
  31. SET @MYID = @TOPID
  32.  
  33. WHILE @MYID is not null
  34. BEGIN
  35. SELECT @MYFOLDER = foldername FROM albums WHERE id = @MYID
  36. SET @FOLDER = @MYFOLDER + '/' + @FOLDER
  37. SELECT @MYID = parent FROM albums WHERE id = @MYID
  38. END
  39.  
  40. INSERT INTO #tmp
  41. SELECT @TOPID, @FOLDER
  42.  
  43. FETCH NEXT FROM tempCursor INTO @TOPID
  44. END
  45. CLOSE tempCursor
  46. DEALLOCATE tempCursor
  47.  
  48. SELECT * FROM #tmp
  49. DROP TABLE #tmp
Add Comment
Please, Sign In to add comment