programing

오류가 발생한 이유: 그룹 기능이 잘못 사용되었습니까?

newsource 2023. 11. 6. 21:52

오류가 발생한 이유: 그룹 기능이 잘못 사용되었습니까?

JSON_OBJECT를 반환하는 mariadb 함수를 만들었습니다.기능은 다음과 같습니다.

DROP FUNCTION IF EXISTS jsontree;

CREATE FUNCTION jsontree (user_id VARCHAR(36)) RETURNS LONGTEXT RETURN (
    SELECT JSON_OBJECT(
        '_item_type', JSON_UNQUOTE("model"),
        '_path', JSON_UNQUOTE("organization"),
        '_title', JSON_UNQUOTE("Organizations"),
        'user', (
            SELECT JSON_OBJECT(
                '_item_type', JSON_UNQUOTE("node"),
                '_path', JSON_UNQUOTE("organizations.user"),
                '_title', JSON_UNQUOTE("Users"),
                '_table', JSON_UNQUOTE("user"),
                'children', JSON_ARRAYAGG(
                    JSON_OBJECT(
                        'user.createdAt', user.createdAt,
                        'user.createdBy', user.createdBy,
                        'user.number', user.number,
                        'user.name', user.name,
                        'user.description', user.description,
                        'user.user_id', user.user_id,
                        'user.organization_id', user.organization_id,
                        'user.job_id', user.job_id,
                        'user.password', user.password,
                        'organization', (
                            SELECT JSON_OBJECT(
                                '_item_type', JSON_UNQUOTE("node"),
                                '_path', JSON_UNQUOTE("organizations.user.organization"),
                                '_title', JSON_UNQUOTE("Organizations"),
                                '_table', JSON_UNQUOTE("organization"),
                                'children', JSON_ARRAYAGG(
                                    JSON_OBJECT(
                                        'organization.id', organization_table.id,
                                        'organization.createdAt', organization_table.createdAt,
                                        'organization.createdBy', organization_table.createdBy,
                                        'organization.number', organization_table.number,
                                        'organization.name', organization_table.name,
                                        'organization.description', organization_table.description,
                                        'organization.user_id', organization_table.user_id,
                                        'organization.organization_id', organization_table.organization_id
                                    )
                                )
                            ) FROM organization organization_table
                                INNER JOIN user user_join ON organization_table.user_id = user_join.id
                                WHERE organization_table.user_id = user.id
                        )
                    )
                )
            ) FROM user where user.id = user_id
        )
    )
);

SELECT jsontree ('4841aa13-01a6-11ed-8fb9-da2c4dfd0e4f');

함수 외부에서 select 문을 실행하면 의도된 JSON_OBJECT가 반환되지만 함수 내에서 실행하면 다음 오류 메시지가 계속 표시됩니다.

오류 1111 (HY000):그룹 함수를 잘못 사용했습니다.

이 오류의 원인은 무엇입니까?

언급URL : https://stackoverflow.com/questions/73933585/what-is-the-reason-of-the-error-invalid-use-of-group-function