2016-02-23 4 views
0

Я пытаюсь заставить 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" 
} 

Некоторые из документов, указанные в «PurchasedAt» -свойство и другие имеют «Магазин» -свойство.

Я хотел бы извлечь Имя, Количество и магазин, на который был куплен товар, присоединив документ к «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, но тонкие различия все еще меня озадачивают: - | ,

ответ

1

В DocumentDB не поддерживаются соединения между документами, только для внутридомовых (self) соединений для форматирования вывода. Для достижения вашей цели вы можете получить и заполнить форму с помощью BuyasedAt, а затем вернуться, чтобы получить более подробную информацию о магазине - два запроса, по сути делающих соединение.

+0

эй, поэтому, когда они пишут «Давайте узнаем о предложении JOIN. JOIN DocumentDB поддерживает внутридокумент и самосоединения. Запустите запрос ниже, чтобы повторить теги пищевого документа». на https://www.documentdb.com/sql/demo (вкладка JOIN), это не так? –

+0

У меня была опечатка в моем первоначальном ответе. Я хотел сказать, что он поддерживает только внутридокументные (self) соединения. Теперь это исправлено. Это имеет смысл? Пример JOIN на демонстрационной странице представляет собой внутридомовое (самостоятельное) соединение. Если вы хотите добавить дополнительный пример, он не появился в этих комментариях. –

+0

@JesperLundStocholm inter и внутри документооборота - это две отдельные концепции. Внутридокументное соединение входит в один и тот же документ и демонстрирует пример DocumentDB. Соединение между документами происходит между различными документами и в настоящее время не поддерживается. Это может сбивать с толку, потому что слова звучат очень похоже, но имеют разные значения. – cnaegle

Смежные вопросы