[英]MariaDb: How to create a nested json object query
我想在 MySql select 查詢中生成一個 json 對象數組。
這是一個數據庫結構,我想為其返回以下格式的結果。
CREATE TABLE IF NOT EXISTS `products` (
`id` int(6) unsigned NOT NULL,
`name` varchar(255),
PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `shops` (
`id` int(6) unsigned NOT NULL,
`name` varchar(255),
PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8;
:: 更新::
預期的 JSON output 將在 postman 中返回:
{
"data": [
{
"products": {
"name": "product1"
},
"shops": {
"name": "shop1"
}
},
{
"products": {
"name": "product2"
},
"shops": {
"name": "shop2"
}
}
]
}
我已經搜索過相同的內容,但無法獲得與我的主題相關的結果,因此是否可以在MariaDB中創建查詢以呈現上述結果?
PS:數據庫版
我並不完全清楚你需要得到什么,但是
這是開始的:
SELECT CONCAT(
'{"shops": [',
GROUP_CONCAT(CONCAT('{"name": "', name, '"}') separator ","),
']}'
)
FROM shop;
這將產生這個 output:
{"shops": [{"name": "shop 1"},{"name": "shop 2"},{"name": "shop 3"}]}
然后你可以做這樣的事情:
SELECT CONCAT(
'{',
(SELECT CONCAT(
'"shops": [',
GROUP_CONCAT(CONCAT('{"name": "', name, '"}') separator ","),
']'
) FROM shop),
',',
(SELECT CONCAT(
'"products": [',
GROUP_CONCAT(CONCAT('{"name": "', name, '"}') separator ","),
']'
) FROM product),
'}'
);
這將給出一些 ghis:
{"shops": [{"name": "shop 1"},{"name": "shop 2"},{"name": "shop 3"}],"products": [{"name": "product 1"},{"name": "product 2"},{"name": "product 3"}]}
現在,無論如何您都可以混合使用您想要的 output。
這是另一個版本:
SELECT CONCAT('{"data": [', GROUP_CONCAT(json, ""), ']}')
FROM (
SELECT GROUP_CONCAT(CONCAT('{"shop": {"name": "', name, '"}}') separator ",") json
FROM shop
union all
SELECT GROUP_CONCAT(CONCAT('{"product": {"name": "', name, '"}}') separator ",") json
FROM product
) t;
產生:
{"data": [{"shop": {"name": "shop 1"}},{"shop": {"name": "shop 2"}},{"shop": {"name": "shop 3"}},{"product": {"name": "product 1"}},{"product": {"name": "product 2"}},{"product": {"name": "product 3"}}]}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.