J'ai une table "Blah" avec une colonne PK BlahID et une BlahItems de colonne XML dans une base de données sur SQL Server 2005.Comment puis-je relier une colonne XML à l'enregistrement dont elle provient?
Ce tableau a des dossiers comme suit ...
BlahID BlahItems ------ ------------------------------------------------------ 1 <root><item name="Fred" /><item name="Wilma" /></root> 2 <root><item name="Lisa" /><item name="Bart" /></root>
Comment puis-je interroger cette table pour produire ce qui suit ....
BlahID BlahItem ------ -------- 1 Fred 1 Wilma 2 Lisa 2 Bart
le plus proche que j'ai réussi à obtenir est un enregistrement par fonction qui fait quelque chose le long des lignes de ce qui suit ...
CREATE FUNCTION dbo.Blahs(@id int)
RETURNS @list TABLE (BlahID int, BlahItem nvarchar(max))
BEGIN
DECLARE @xml AS xml
SELECT @xml = BlahItems FROM dbo.Blah AS b WHERE b.BlahID = @id
INSERT INTO @list
SELECT @id, tbl.col.value('@name','nvarchar(max)')
FROM @xml.nodes('/root/item') tbl(col)
RETURN
END
SELECT * FROM dbo.Blahs(1)
BlahID BlahItem ------ -------- 1 Fred 1 Wilma
Mon but ultime est de créer une vue des données « étendues », puis la requête sur la vue.
Génial merci. Il fonctionne comme un charme. – BlackMael