2013-09-14 4 views
1

У меня есть XML, который выглядит следующим образом:Вставка XML в таблице

<Weather Location="Tuzla, Bosnia and Herzegovina"> 
    <Forecast> 
    <Description>sky is clear</Description> 
    <IconID>01d</IconID> 
    <Date>2013-09-14</Date> 
    <MinTemp>11</MinTemp> 
    <MaxTemp>21</MaxTemp> 
    <Pressure>994</Pressure> 
    <Humidity>39</Humidity> 
    <Wind>2</Wind> 
    </Forecast> 
    <Forecast> 
    <Description>scattered clouds</Description> 
    <IconID>03d</IconID> 
    <Date>2013-09-15</Date> 
    <MinTemp>9</MinTemp> 
    <MaxTemp>24</MaxTemp> 
    <Pressure>991</Pressure> 
    <Humidity>44</Humidity> 
    <Wind>1</Wind> 
    </Forecast> 
    <Forecast> 
... //it has 10 Forecast parts 
</Weather> 

В моей базе данных у меня есть таблица, которая имеет только два поля, идентификатор и этот XML. Поэтому, когда я вставляю новый XML, мне нужно выяснить, существует ли там XML с этим местоположением и где дата с первых частей Прогноза одинакова. Есть ли способ читать только Дата с первого дня Прогноз ребенка этого корневого элемента Погода? Я знаю, что мне нужно пройти через мой стол и выполнить поиск каждого файла XML, который у меня есть, и это не проблема, но мне нужна только дата только от первого прогнозируемого ребенка.

Пожалуйста, помогите ...

+0

Много вопросов перед вами может получить некоторую помощь, но я начну с двух основных: 1), какие RDBMS? (MySQL, SQL Server, Postgre?) И 2) Что вы пробовали до сих пор? –

+0

Я использую SQL Server. Я сейчас что-то пытаюсь сделать, поэтому я еще не опубликовал код. – Edna

ответ

2

вы можете прочитать Дата с первого прогноза и местоположение как (предполагается, что это SQL Server)

select 
    t.Data.value('(Weather/@Location)[1]', 'nvarchar(max)') as Location, 
    t.Data.value('(Weather/Forecast/Date)[1]', 'date') as Date 
from table1 as t 

sql fiddle demo

+0

Спасибо, это то, что я искал :-) – Edna