我正在尝试让JOIN正确处理Azure DocumentDB数据库中的数据。
我有一堆代表购买的文件,例如
{
"Timestamp": "2016-02-22T15:05:09.9863478+01:00",
"MessageTemplate": "Processed {@Purchases}",
"Level": 2,
"Exception": null,
"RenderedMessage": "Processed { Name: \"FunnyBibs\", Quantity: 112, PurchasedAt: \"Store2\" }",
"Properties": {
"Purchases": {
"Name": "FunnyBibs",
"Quantity": 112,
"PurchasedAt": "Store2"
}
},
"id": "2d919bbc-2763-47ea-9cc0-ee41cd6adb96"
}
{
"Timestamp": "2016-02-22T15:05:09.8462592+01:00",
"MessageTemplate": "Processed {@Purchases}",
"Level": 2,
"Exception": null,
"RenderedMessage": "Processed { Name: \"Hats\", Quantity: 11, PurchasedAt: \"Store1\" }",
"Properties": {
"Purchases": {
"Name": "Hats",
"Quantity": 11,
"PurchasedAt": "Store1"
}
},
"id": "d6a5244b-92ef-4785-a065-dc45790f87b4"
}
{
"Timestamp": "2016-02-22T15:05:09.6886969+01:00",
"MessageTemplate": "Processed {@Purchases}",
"Level": 2,
"Exception": null,
"RenderedMessage": "Processed { Name: \"Drinks\", Quantity: 4, Store: \"Store1\" }",
"Properties": {
"Purchases": {
"Name": "Drinks",
"Quantity": 4,
"Store": "Store1"
}
},
"id": "ed1ee4e4-862e-412e-9f37-05a5925c4c09"
}
有些文件指定了“已购买的”属性,而其他文件则指定了“商店”属性。
我想通过加入“Store”-property和“PurchasedAt”-property上的文件来提取名称,数量和购买商品的商店,这样我就能感受到同时购买了多少商品的地方。
所以我写了这个JOIN语句 - 但我无法弄清楚如何获得任何数据作为回报。
SELECT soldAt.PurchasedAt, item.Properties.Purchases.Quantity
FROM item
JOIN soldAt IN item.Properties.Purchases.PurchasedAt
WHERE item.Store = soldAt.PurchasedAt
那么我做错了什么?我意识到JOIN语法看起来很像T-SQL,但微妙的差异仍让我感到困惑: - |
答案 0 :(得分:1)
DocumentDB不支持文档间连接,只支持文档内(自身)连接以格式化输出。为了实现您的目标,您可以使用PurchasedAt获取和聚合,然后返回以获取更多商店详细信息 - 两个查询基本上完成了连接。