Извлечь значение из одной таблицы, если их значения совпадают со второй таблицей - PullRequest
1 голос
/ 06 августа 2020

Фон:

У меня есть две таблицы в базе данных CosmosDB, которые содержат документы типа «ключ: значение» в своих контейнерах. T1 и T2

T1
 
Id: 111
ems_featurecategory: 1234
ems_name: "win"



T2
 
feature_category: "win"
feature_category: "hello"

I wi sh для запроса cosmosdb, чтобы I:

возвращал значение из ключа ems_featurecategory T1, если значение ems_name из T1 совпадает со значением feature_category из T2.

Желаемый результат:

Итак, поскольку значение ключа ems_name из T1 совпадает со значением ключа featurecategory из T2

ems_name: "win"
featurecategory: "win",

значение, которое будет возвращается: 1234

Мой подход:

СОЕДИНИТЕ две таблицы и выполните такой запрос, как:

 SELECT c.emsfeaturecategory, c.ems_name, f.feature_category
 FROM c 
 JOIN f in c.id
 WHERE array_contains(['',''],c.id,true)
 AND c.ems_name = featurecategory...

Я не уверен как правильно написать этот запрос. Любые предложения или советы полезны.

Ответы [ 2 ]

2 голосов
/ 06 августа 2020

В cosmosdb кросс-контейнерный поиск не может быть выполнен. Я предлагаю вам изменить схему вашего документа следующим образом:

T1
     
{
    "id": "111",
    "ems_featurecategory": 1234,
    "ems_name": "win",
    "feature_category": [
        "win",
        "hello"
    ]
}

Затем вы можете использовать это sql:

 SELECT value c.ems_featurecategory     
 FROM c 
 where array_contains(c.feature_category,c.ems_name,true)

Вот результат моего теста: введите описание изображения здесь

1 голос
/ 06 августа 2020

Просто сделайте это:

select c.emsfeaturecategory, c.ems_name, f.feature_category
from table1 c
join table2 f on c.ems_name = f.featurecategory

используя ваш пример, он вернет следующее:

emsfeaturecategory | ems_name | feature_category
1234               | win      | hello 

Я использую указанные вами столбцы. Позже вы скажете, что хотите, чтобы выводился только 1234. Тогда вы просто выполните:

select c.emsfeaturecategory
from table1 c
join table2 f on c.ems_name = f.featurecategory

Примечание: объединение функционально такое же, как «внутреннее соединение»

Подробнее о объединениях можно узнать здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...