У нас есть данные, которые мы хотим вернуть, если другие данные не существуют. Подумайте о значениях по умолчанию, которые возвращаются, но если указаны конкретные значения, мы хотим их получить. Но с JOIN кажется, что если конкретное значение не существует, документ не возвращается. Нет левого соединения. Трудно объяснить без примера, поэтому, пожалуйста, проверьте код.
Пробовал различные объединения и где заявления, не может найти тот, который работает.
SELECT
c.myId,
(IS_DEFINED(dm.code) ? tm.code : dm.code) as code
FROM c
JOIN dm in c.modelData
JOIN tm in c.modelData
WHERE c.partitionKey="8"
AND dm.dataScope = "default"
and tm.dataScope = "other"
пример данных
[
{
"myId": "1",
"partitionKey": "8",
"values": [
{
"dataScope": "default",
"code": "1"
},
{
"dataScope": "other",
"code": "1a"
}
],
"id": "ba884879-9b9b-3ff2-dc08-ca6168892ca5"
},
{
"myId": "2",
"partitionKey": "8",
"values": [
{
"dataScope": "default",
"code": "1a"
},
{
"dataScope": "other",
"code": "2"
}
],
"id": "864625c2-50de-5d56-9626-26b04d8ff1f2"
},
{
"myId": "3",
"partitionKey": "8",
"values": [
{
"dataScope": "default",
"code": "1a"
},
{
"dataScope": "other",
"valuesProperty": "true"
}
],
"id": "b414d2da-56c7-dff9-0cf5-5350f215639e"
},
{
"myId": "4",
"partitionKey": "8",
"values": [
{
"dataScope": "default",
"code": "2"
}
],
"id": "9df94567-5069-452c-4c1e-99ee2e72480c"
}
]
То, что мы хотим получить, выглядит примерно так:
[
{
"myId": "1",
"code": "1a"
},
{
"myId": "2",
"code": "2"
},
{
"myId": "3",
"code": "1a"
},
{
"myId": "4",
"code": "2"
}
]
То, что мы получаем, обычно выглядит примерно так:
[
{
"myId": "1",
"code": "1a"
},
{
"myId": "2",
"code": "2"
},
{
"myId": "3"
}
]
Отредактированный заголовок, возможно, больше людей будут читать и, надеюсь, он получит ответ.