De travail avec le Serveur SQL de type de données XML

J'ai une table qui a un champ XML.
Le typique XML qu'il contient;

<things>
  <Fruit>
    <imageId>39</imageId>
    <title>Apple</title>
  </Fruit>
  <Fruit>
    <imageId>55</imageId>
    <title>Pear</title>
  </Fruit>
  <Fruit>
    <imageId>76</imageId>
    <title>Grape</title>
  </Fruit>
</things>

Dans ma table j'ai autour de 50 lignes, je me préoccupe seulement de deux champs, omId (int primary key) et omText (mes données xml).

Ce que je suis en train de réaliser est une manière de dire, à travers toutes les données xml dans l'ensemble de la table... donnez-moi tous les xmlElements où le titre est X. Ou me donner un compte de tous les éléments qui utilisent un imageId de 55 ans.

Je suis en utilisant le type de données XML de la VALEUR et des fonctions de REQUÊTE pour récupérer les données.

   select omID,
   omText.query('/things/Fruit')
   ,cast('<results>' + cast(omText.query('/things/Fruit') as varchar(max)) + '</results>' as xml) as Value
   from dbo.myTable
   where omText.value('(/things/Fruit/imageId)[1]', 'int') = 76

Qui ne marche que si l'id que je recherche, est le premier dans le document. Il ne semble pas rechercher tous les xml.

Fondamentalement le jeu de résultats est de retour avec une ligne pour chaque entrée dans la TABLE, wheras je pense que j'ai besoin d'avoir une ligne pour chaque appariés ÉLÉMENT... Pas vraiment sûr de savoir comment commencer l'écriture d'un groupe par pour cette tho.

Je commence à me sentir comme je suis en train de faire ce plus difficile qu'il doit être...... pensées & des idées s'il vous plaît.

OriginalL'auteur GordonB | 2009-07-31