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