使用多个值连接XML列上的表

时间:2013-08-07 08:22:24

标签: sql sql-server sql-server-2005

我想加入表格fgz_merken中的表格fgz_leveranciers。表fgz_merken有一个xml列lst_leveranciers。此时我只在fgz_merken.lst_leveranciers中获得只有一个值的记录。你能救我吗?

select
  fgz_leveranciers.adres,
  fgz_leveranciers.debiteurnr,
  fgz_leveranciers.fax,
  fgz_leveranciers.fax_jaarbeurs,
  fgz_leveranciers.id,
  fgz_leveranciers.import_leverancier_id,
  fgz_leveranciers.mailto,
  fgz_leveranciers.plaats,
  fgz_leveranciers.plaats_postadres,
  fgz_leveranciers.postadres,
  fgz_leveranciers.postcode,
  fgz_leveranciers.postcode_postadres,
  fgz_leveranciers.stand,
  fgz_leveranciers.tel,
  fgz_leveranciers.tel_jaarbeurs,
  fgz_leveranciers.title,
  fgz_leveranciers.vereniging,
  fgz_leveranciers.website,
  fgz_merken.title as MerkTitel 
from 
  fgz_leveranciers 
  left join fgz_merken on 
    fgz_merken.lst_leveranciers.exist('lst_leveranciers/lst_leveranciers[.=sql:column("fgz_leveranciers.id")]') = 1 
where 
  fgz_leveranciers.id != '0' 
  and fgz_merken.title like '%swa%' 
order by fgz_leveranciers.id

这是来自fgz_merken.lst_leveranciers的一些数据

<lst_leveranciers>
  <lst_leveranciers>
    <value>125</value>
  </lst_leveranciers>
</lst_leveranciers>
<lst_leveranciers>
  <lst_leveranciers>
    <value>16</value>
    <value>40</value>
    <value>269</value>
  </lst_leveranciers>
</lst_leveranciers>

1 个答案:

答案 0 :(得分:0)

select
    fgz_leveranciers.*,
    xmldata.i
from
    fgz_leveranciers
    left join
    (                
        Select x.t.value('.','int') i
        from fgz_merken
            cross apply lst_leveranciers.nodes('lst_leveranciers/lst_leveranciers/value') as x(t)
      ) xmldata
    on fgz_leveranciers.i = xmldata.i
相关问题