문제:
MySQL 5.7.12의 JSON 함수를 사용하여 어떻게 할 수 있습니까? 관계형 데이터에서 하위 개체가 포함된 JSON 문서를 구성합니다. 테이블?
데이터베이스 설정:
다음 테이블을 고려하세요.
CREATE TABLE `parent_table` ( `id` int(11) NOT NULL, `desc` varchar(20) NOT NULL, PRIMARY KEY (`id`) ); CREATE TABLE `child_table` ( `id` int(11) NOT NULL, `parent_id` int(11) NOT NULL, `desc` varchar(20) NOT NULL, PRIMARY KEY (`id`,`parent_id`) ); insert `parent_table` values (1,'parent row 1'); insert `child_table` values (1,1,'child row 1'); insert `child_table` values (2,1,'child row 2');
원하는 JSON 출력:
[{ "id" : 1, "desc" : "parent row 1", "child_objects" : [{ "id" : 1, "parent_id" : 1, "desc" : "child row 1" }, { "id" : 2, "parent_id" : 1, "desc" : "child row 2" } ] }]
해결책:
원하는 중첩 JSON을 생성하려면 MySQL의 GROUP_CONCAT 함수를 사용하여 child_table의 여러 행을 끈. 그런 다음 문자열을 JSON_ARRAY로 래핑하여 JSON 배열로 변환합니다.
select json_object( 'id',p.id ,'desc',p.`desc` ,'child_objects',(select CAST(CONCAT('[', GROUP_CONCAT( JSON_OBJECT( 'id',id,'parent_id',parent_id,'desc',`desc`)), ']') AS JSON) from child_table where parent_id = p.id) ) from parent_table p;
이 쿼리는 원하는 출력에 지정된 대로 정확하게 JSON 문서를 생성합니다.
위 내용은 MySQL 5.7의 관계형 테이블에서 중첩 JSON을 생성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!