テーブルデータベースsqlserver/mysqlに既に存在するデータからmongodbのソースドキュメントを設計しようとしています。TSQLを使用してJsonを生成する方法
USE scratch
GO
CREATE TABLE Customer(customer_id int identity(1,1), FirstName varchar(100),LastName varchar(100));
Create TAble Product(Product_id int identity(1,1), Name varchar(100), Price numeric(18,2), Unit varchar(10));
CREATE TABLE OrderTransaction(Tr_id int identity(1,1), customer_id int, Product_id int ,Quantity int, TotalCost numeric, trdate datetime, weigh int , weighunit varchar(100));
INSERT INTO Customer(FirstName,LastName)
SELECT 'Harry','G'
UNION ALL
SELECT 'Jenne','G'
UNION ALL
SELECT 'Gill','G'
UNION ALL
SELECT 'Tom','G'
UNION ALL
SELECT 'Bai','G'
INSERT INTO Product(Name,Price, Unit)
SELECT 'Sugar',100,'kg'
UNION ALL
SELECT 'Olive Oil',500,'litre'
UNION ALL
SELECT 'Loreal Face Wash',200,NULL
UNION ALL
SELECT 'FLour',400,'kg'
UNION ALL
SELECT 'Onion',20,'kg'
UNION ALL
SELECT 'Potato',10,'kg'
INSERT INTO OrderTransaction(customer_id,Product_id,Quantity,TotalCost,trdate,weigh,weighunit)
SELECT 1,1,5,500,GETDATE()-40,5,'kg'
UNION ALL
SELECT 1,2,1,2500,GETDATE()-40,5,'litre'
UNION ALL
SELECT 1,3,5,500,GETDATE()-30,5,'kg'
UNION ALL
SELECT 1,4,1,200,GETDATE()-30,NULL,NULL
UNION ALL
SELECT 1,5,5,100,GETDATE(),5,'kg'
UNION ALL
SELECT 1,6,5,50,GETDATE(),5,'kg'
UNION ALL
SELECT 2,1,5,500,GETDATE()-40,5,'kg'
UNION ALL
SELECT 2,2,1,2500,GETDATE()-40,5,'litre'
UNION ALL
SELECT 2,3,5,500,GETDATE()-30,5,'kg'
UNION ALL
SELECT 2,4,1,200,GETDATE()-30,NULL,NULL
UNION ALL
SELECT 2,5,5,100,GETDATE(),5,'kg'
UNION ALL
SELECT 2,6,5,50,GETDATE(),5,'kg'
以下のようにスキーマを使用して、私は3人の表の顧客を用意しました製品&注文取引を実施するための
は、私は、SQL Server 2016年にJSONのパスを試してみたが、グループに任意のドキュメント を見つけられませんでした顧客に基づく取引では、各取引を文書として作成します。
select a.customer_id as 'Customer.customer_id'
,FirstName as 'Customer.FirstName'
,LastName as 'Customer.LastName'
,Tr_id as 'Customer.AllTransaction.Tr_id'
,b.Product_id as 'Customer.AllTransaction.Product_id'
,Quantity as 'Customer.AllTransaction.Quantity'
,TotalCost as 'Customer.AllTransaction.TotalCost'
,p.Name as 'Customer.AllTransaction.ProductName'
from Customer a
inner join OrderTransaction b
on a.customer_id=b.customer_id
inner join Product p
on b.Product_id=p.Product_id
FOR JSON PATH
私のようなJSONを準備するためのクエリを作成したいと思います:
[
{
"customer_id": 1,
"FirstName": "Harry",
"LastName": "G",
"totalsales": 3850.0,
"LastTransactionDate": "2014-12-1208: 42: 00.000Z",
"AllTransctionList": [
{
"Tr_id": 1,
"Product_id": 1,
"Quantity": 5,
"TotalCost": 500,
"ProductName": "Sugar"
},
{
"Tr_id": 2,
"Product_id": 2,
"Quantity": 1,
"TotalCost": 2500,
"ProductName": "Olive Oil"
},
{
"Tr_id": 3,
"Product_id": 3,
"Quantity": 5,
"TotalCost": 500,
"ProductName": "Loreal Face Wash"
},
{
"Tr_id": 4,
"Product_id": 4,
"Quantity": 1,
"TotalCost": 200,
"ProductName": "FLour"
},
{
"Tr_id": 5,
"Product_id": 5,
"Quantity": 5,
"TotalCost": 100,
"ProductName": "Onion"
},
{
"Tr_id": 6,
"Product_id": 6,
"Quantity": 5,
"TotalCost": 50,
"ProductName": "Potato"
}
]
},
{
"customer_id": 2,
"FirstName": "Jenne",
"LastName": "G",
"totalsales": 3850.0,
"LastTransactionDate": "2014-12-1208: 42: 00.000Z",
"AllTransctionList": [
{
"Tr_id": 1,
"Product_id": 1,
"Quantity": 5,
"TotalCost": 500,
"ProductName": "Sugar"
},
{
"Tr_id": 2,
"Product_id": 2,
"Quantity": 1,
"TotalCost": 2500,
"ProductName": "Olive Oil"
},
{
"Tr_id": 3,
"Product_id": 3,
"Quantity": 5,
"TotalCost": 500,
"ProductName": "Loreal Face Wash"
},
{
"Tr_id": 4,
"Product_id": 4,
"Quantity": 1,
"TotalCost": 200,
"ProductName": "FLour"
},
{
"Tr_id": 5,
"Product_id": 5,
"Quantity": 5,
"TotalCost": 100,
"ProductName": "Onion"
},
{
"Tr_id": 6,
"Product_id": 6,
"Quantity": 5,
"TotalCost": 50,
"ProductName": "Potato"
}
]
}
]
まず、あなたが使用しているDBMSを決定する必要があります。 mysqlとsqlserverの両方を記述します。ソリューションは、それぞれに大きく異なるでしょう。 –