MariaDb: 중첩 json 객체 쿼리를 만드는 방법
MySql Select 쿼리에서 json 객체 배열을 생성하고 싶습니다.
아래와 같이 결과물을 반품하고 싶은 db 구조입니다.
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 출력:
{
"data": [
{
"products": {
"name": "product1"
},
"shops": {
"name": "shop1"
}
},
{
"products": {
"name": "product2"
},
"shops": {
"name": "shop2"
}
}
]
}
동일한 내용을 검색했는데 제 주제와 관련된 결과가 나오지 않는데 마리아DB에서 위의 결과를 렌더링하기 위한 쿼리를 생성할 수 있나요?
추신: DB 버전
당신이 무엇을 구해야 하는지 나는 확실히 알 수 없지만,
다음은 먼저 시작해야 할 내용입니다.
SELECT CONCAT(
'{"shops": [',
GROUP_CONCAT(CONCAT('{"name": "', name, '"}') separator ","),
']}'
)
FROM shop;
그러면 다음과 같은 결과가 나옵니다.
{"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),
'}'
);
이것은 다음과 같은 기스를 줄 것입니다.
{"shops": [{"name": "shop 1"},{"name": "shop 2"},{"name": "shop 3"}],"products": [{"name": "product 1"},{"name": "product 2"},{"name": "product 3"}]}
이제 원하는 출력을 얻기 위해 원하는 방식으로 이를 혼합할 수 있습니다.
다음은 한 가지 버전입니다.
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"}}]}
언급URL : https://stackoverflow.com/questions/62318063/mariadb-how-to-create-a-nested-json-object-query
'programing' 카테고리의 다른 글
SQLSTATE[HY093]:매개 변수 번호가 잘못되었습니다. 매개 변수가 정의되지 않았습니다. (0) | 2023.09.06 |
---|---|
MySQL에서 트리거를 비활성화하는 방법? (0) | 2023.09.06 |
Ajax.BeginForm은 Ajax 스크립트를 실행하지 않고 포스트백으로 뒤로 넘어갑니다. (0) | 2023.09.06 |
C에서 음영처리된 전역 변수에 액세스하려면 어떻게 해야 합니까? (0) | 2023.09.06 |
위치 절대 + 스크롤 (0) | 2023.09.06 |