Cosmos DB - Может ли объединить возврат данных с пропущенными полями - иначе, LEFT JOIN? - PullRequest
0 голосов
/ 03 июня 2019

У нас есть данные, которые мы хотим вернуть, если другие данные не существуют. Подумайте о значениях по умолчанию, которые возвращаются, но если указаны конкретные значения, мы хотим их получить. Но с 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"
    }
]

Отредактированный заголовок, возможно, больше людей будут читать и, надеюсь, он получит ответ.

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