Можно ли переписать этот SQL-запрос CosmosDb с помощью SubQuery вместо самосоединения?

У меня есть коллекция документов в CosmosDb, и я хочу выполнить SQL-запрос к вложенной коллекции этих документов, но я запрашиваю данные только по одному конкретному документу за раз.

Пример документа

{
  "id": "d0769c6e-2334-4bb7-ae41-e45a8ac8896c",
  "Scores": [
    {
      "Name": "blabla",
      "Score": 10
    },
    {
      "Name": "blabla",
      "Score": 30
    }
  ]
}

В настоящее время у меня работает следующий запрос:

SELECT SUM(item.Score) 
FROM c
JOIN item IN c.Scores
WHERE c.id = "d0769c6e-2334-4bb7-ae41-e45a8ac8896c" AND item.Name = 'blabla'

Я лучше напишу такой запрос:

SELECT SUM(row.Score)
FROM row IN (SELECT c.Scores FROM c WHERE c.id = "d0769c6e-2334-4bb7-ae41-e45a8ac8896c")
WHERE row.Name = 'blabla'

Но конечно не работает. Вы знаете какой-либо возможный способ опроса вторым способом?

Спасибо !!


person Marc Allaume    schedule 15.11.2019    source источник


Ответы (1)


Вы можете попробовать с аналогичным, если это сработает для вас:

SELECT SUM(item.Score)
FROM c
JOIN (SELECT s.Score, s.Name FROM s IN c.Scores ) as item
WHERE item.Name='blabla' 
and c.id='d0769c6e-2334-4bb7-ae41-e45a8ac8896c'
person Peppi Alexandrova    schedule 19.11.2019
comment
Привет, большое спасибо! Это действительно работает, но остается с соединениями вместо подзапросов ... Боюсь, у меня действительно не будет выбора ... - person Marc Allaume; 22.11.2019