# #c# #json #firebase #tsql #nosql
Вопрос:
Как можно вернуть следующие результаты запроса TSQL в формате JSON, где первичными ключами являются boardId, StoreID и код?
Бордид | StoreID | Код | Количество |
---|---|---|---|
070 | 001 | 20011 | 2 |
070 | 006 | 20011 | 1 |
070 | 001 | 20074 | 67 |
070 | 002 | 20074 | 15 |
070 | 004 | 20074 | 51 |
Преобразование будет выглядеть следующим образом: в качестве пути используется код boardId, StoreID, код:
"70" : {
"001" : {
"20011" : {
"BoardId" : 70,
"Code" : "20011",
"Quantity" : 2,
"StoreId" : "001",
"TimeStamp" : "2021-09-20T12:37:18.9300502-04:00"
},
"20074" : {
"BoardId" : 70,
"Code" : "20074",
"Quantity" : 67,
"StoreId" : "001",
"TimeStamp" : "2021-09-20T12:37:18.9797415-04:00"
},
"20163" : {
"BoardId" : 70,
"Code" : "20163",
"Quantity" : 3,
"StoreId" : "001",
"TimeStamp" : "2021-09-20T12:37:18.9807881-04:00"
},
"20611" : {
"BoardId" : 70,
"Code" : "20611",
"Quantity" : 1,
"StoreId" : "001",
"TimeStamp" : "2021-09-20T12:37:18.9807923-04:00"
}...
Можно ли это сделать с помощью запроса TSQL с использованием «для JSON»? Кажется, я ничего не могу найти, не сделав что-то на заказ в приведенном выше примере. Открыт для альтернативных предложений. Мне нужно синхронизировать некоторые таблицы SQL с Firebase. Это также позволило бы мне выполнять массовые вставки/обновления.
Ответ №1:
Не совсем то, о чем вы спрашиваете, но я рекомендую прочитать документацию Firebase по структурированию данных, в частности раздел об уменьшении вложенности данных.
Ближайшим эквивалентом вашей структуры данных SQL в базе данных Firebase в реальном времени является:
"70_001_20011" : {
"BoardId" : 70,
"Code" : "20011",
"Quantity" : 2,
"StoreId" : "001",
"TimeStamp" : "2021-09-20T12:37:18.9300502-04:00"
},
"70_001_20074" : {
"BoardId" : 70,
"Code" : "20074",
"Quantity" : 67,
"StoreId" : "001",
"TimeStamp" : "2021-09-20T12:37:18.9797415-04:00"
},
"70_001_20163" : {
"BoardId" : 70,
"Code" : "20163",
"Quantity" : 3,
"StoreId" : "001",
"TimeStamp" : "2021-09-20T12:37:18.9807881-04:00"
},
"70_001_20611" : {
"BoardId" : 70,
"Code" : "20611",
"Quantity" : 1,
"StoreId" : "001",
"TimeStamp" : "2021-09-20T12:37:18.9807923-04:00"
}...
Итак, здесь мы объединили три значения, которые являются вашим первичным ключом в SQL, в ключ для каждого узла в Firebase. При этом у нас будет плоский список узлов, точно так же, как у вас есть плоский список строк в SQL.
Поведение базы данных по-прежнему будет отличаться (и я рекомендую прочитать моделирование данных NoSQL и посмотреть Firebase для разработчиков SQL, чтобы узнать больше о том, почему и как это происходит), но эта структура является достойной отправной точкой.
Комментарии:
1. Отличный Ответ, Спасибо! Также спасибо за рекомендации.