All pastes #969430 Raw Edit

Miscellany

public text v1 · immutable
·published 2008-04-03 16:33 UTC
rendered paste body
select track_id into #xmlexport 
from tracks where track_id in (
-- Put comma seperated track_ids here
12345,123456
)


SELECT 1 AS Tag, NULL AS Parent,
	NULL AS [tracks!1!] ,
	NULL AS [track!2!track_id!element] ,
	NULL AS [track!2!title!element] ,
	NULL AS [track!2!artist_name!element] ,
	NULL AS [track!2!duration!element] ,
	NULL AS [genres!3!element] ,
	NULL AS [genre!4!genre_id!element] ,
	NULL AS [genre!4!genre_name!element]

UNION ALL

SELECT 2 AS Tag, 1 AS Parent,
	NULL AS [tracks!1!element] ,
	t.track_id AS [track!2!track_id!element] ,
	t.title AS [track!2!title!element] ,
	t.artist_name AS [track!2!artist_name!element] ,
	t.duration AS [track!2!duration!element] ,
	NULL AS [genres!3!element] ,
	NULL AS [genre!4!genre_id!element] ,
	NULL AS [genre!4!genre_name!element]

FROM tracks t
where t.track_id in ( select track_id from #xmlexport )

UNION ALL

SELECT 3 AS Tag , 2 AS Parent,
	NULL AS [tracks!1!element] ,
	t.track_id AS [track!2!track_id!element] ,
	t.title AS [track!2!title!element] ,
	t.artist_name AS [track!2!artist_name!element] ,
	t.duration AS [track!2!duration!element] ,
	NULL AS [genres!3!element] ,
	NULL AS [genre!4!genre_id!element] ,
	NULL AS [genre!4!genre_name!element]

FROM 
	tracks t
WHERE t.track_id in ( select track_id from #xmlexport )

UNION ALL

SELECT 4 AS Tag , 3 AS Parent,
	NULL AS [tracks!1!element] ,
	t.track_id AS [track!2!track_id!element] ,
	t.title AS [track!2!title!element] ,
	t.artist_name AS [track!2!artist_name!element] ,
	t.duration AS [track!2!duration!element] ,
	NULL AS [genres!3!element] ,
	g.genre_id AS [genre!4!genre_id!element] ,
	g.genre_name AS [genre!4!genre_name!element]

FROM 
	tracks t
	INNER JOIN track_genre_xref tgx on tgx.track_id = t.track_id
	INNER JOIN genres g on g.genre_id = tgx.genre_id
WHERE t.track_id in ( select track_id from #xmlexport )

FOR XML EXPLICIT 

drop table #xmlexport