각 고객에 대한 가장 최근 주문을 반환하기 위해 Altova XMLSpy 및 XQuery 1.0을 사용하려고합니다.XQuery 각 고객에 대한 최신 주문
는 SQL에서 쿼리는 다음과 같다 :
는SELECT `Order ID`, `Customer ID`, `Employee ID`, `Order Date`
FROM Orders AS O1
WHERE `Order Date` =
(SELECT MAX(`Order Date`)
FROM Orders AS O2
WHERE O2.[Customer ID] = O1.[Customer ID]);
16 개 행을 반환하지만 XQuery를 작동 유사 아무것도 얻을 수 없습니다.
나는 코드의 여러 변화를 시도하고 내가 가지고 가장 가까운이 생각 :
<result>
{
for $cust in distinct-values(doc("Orders.xml")//Orders/Customer_x0020_ID)
return
<Customer>
{
for $order in doc("Orders.xml")//Orders
where $cust = $order/Customer_x0020_ID
return max(xs:string($order/Order_x0020_Date))
}
</Customer>
}
</result>
사과를 XML은 MS Access에서 내 보낸 끔찍한 태그 이름을.
도와주세요! 미리 감사드립니다.
<Orders>
<Order_x0020_ID>30</Order_x0020_ID>
<Employee_x0020_ID>9</Employee_x0020_ID>
<Customer_x0020_ID>27</Customer_x0020_ID>
<Order_x0020_Date>2006-01-15T00:00:00</Order_x0020_Date>
</Orders>
편집 : 가장 최근의 (또는 최대 날짜를) 필요로 할 때 joemfb의 솔루션을 시도 후에 나는 각 고객에 대한 모든 주문을받을 :
<Customer>
<Order_x0020_ID>57</Order_x0020_ID>
<Customer_x0020_ID>27</Customer_x0020_ID>
<Employee_x0020_ID>9</Employee_x0020_ID>
<Order_x0020_Date>2006-04-22T00:00:00</Order_x0020_Date>
<Order_x0020_ID>30</Order_x0020_ID>
<Customer_x0020_ID>27</Customer_x0020_ID>
<Employee_x0020_ID>9</Employee_x0020_ID>
<Order_x0020_Date>2006-01-15T00:00:00</Order_x0020_Date>
</Customer>
<Customer>
<Order_x0020_ID>80</Order_x0020_ID>
<Customer_x0020_ID>4</Customer_x0020_ID>
<Employee_x0020_ID>2</Employee_x0020_ID>
<Order_x0020_Date>2006-04-25T17:03:55</Order_x0020_Date>
<Order_x0020_ID>58</Order_x0020_ID>
<Customer_x0020_ID>4</Customer_x0020_ID>
<Employee_x0020_ID>3</Employee_x0020_ID>
<Order_x0020_Date>2006-04-22T00:00:00</Order_x0020_Date>
<Order_x0020_ID>61</Order_x0020_ID>
<Customer_x0020_ID>4</Customer_x0020_ID>
<Employee_x0020_ID>9</Employee_x0020_ID>
<Order_x0020_Date>2006-04-07T00:00:00</Order_x0020_Date>
<Order_x0020_ID>34</Order_x0020_ID>
<Customer_x0020_ID>4</Customer_x0020_ID>
<Employee_x0020_ID>9</Employee_x0020_ID>
<Order_x0020_Date>2006-02-06T00:00:00</Order_x0020_Date>
<Order_x0020_ID>31</Order_x0020_ID>
<Customer_x0020_ID>4</Customer_x0020_ID>
<Employee_x0020_ID>3</Employee_x0020_ID>
<Order_x0020_Date>2006-01-20T00:00:00</Order_x0020_Date>
</Customer>
작업 할 예제 데이터를 항상 제공하십시오. 다른 모든 것은 단지 데이터의 오역 때문에 여러 가지 후속 질문으로 이어집니다. –
어떤 콘크리트 데이터베이스를 사용하고 있습니까? 그들은 모두 쿼리 언어로 "SQL"을 사용하지만 XML 지원과 같은 것들은 공급 업체마다 상당히 다릅니다. 따라서 MySQL, Postgres, Sybase, IBM DB2, Oracle, SQL Server, Interbase 등 사용하고있는 구체적인 데이터베이스로 태그를 업데이트하십시오! –
MS Access를 사용하고 있지만 XQuery가 데이터베이스를 사용하지 않는 경우, 독립 실행 형 XML 문서 (현재 스 니펫을 제공 한 것)에서 Altova XMLSpy에서 쿼리를 실행하고 있습니다. – dinkydani