Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Não é possível rodar comando

Gerando JSON

3 respostas

Criando a tabela tb_object_departamento_projeto_trabalha_em:

    CREATE TABLE tb_object_departamento_projeto_trabalha_em (
                NUMERO_DEPARTAMENTO INT NOT NULL,
                `JSON` JSON,
                PRIMARY KEY (NUMERO_DEPARTAMENTO));

Inserindo JSON:

    INSERT INTO tb_object_departamento_projeto_trabalha_em VALUES
            (1, 
                    '{
                      "Numero_Departamento": "1",
                      "Data_Inicio_Gerente": "1981-06-19",
                      "Nome_Departamento": "Matriz",
                      "Cpf_Gerente": "88866555576",
                      "Projeto": 
                        [
                            {
                                "Numero_Projeto": "20",
                                "Nome_Projeto": "Reorganização",
                                "Local_Projeto": "São Paulo",
                                "Horas_trabalhadas": 
                                    [
                                        {
                                            "Cpf_Funcionario": "33344555587",
                                            "Horas": "10"
                                        },
                                        {
                                            "Cpf_Funcionario": "88866555576",
                                            "Horas": "0"
                                        },
                                        {
                                            "Cpf_Funcionario": "98765432168",
                                            "Horas": "20"
                                        }
                                    ]
                            }
                        ]
                    }'
            ),
            (4, 
                    '{
                      "Numero_Departamento": "4",
                      "Data_Inicio_Gerente": "1995-01-01",
                      "Nome_Departamento": "Administração",
                      "Cpf_Gerente": "98765432168",
                      "Projeto": 
                        [
                            {
                                "Numero_Projeto": "1",
                                "Nome_Projeto": "Produto X",
                                "Local_Projeto": "Santo André",
                                "Horas_trabalhadas": 
                                    [
                                        {
                                            "Cpf_Funcionario": "12345678966",
                                            "Horas": "33"
                                        },
                                        {
                                            "Cpf_Funcionario": "45345345376",
                                            "Horas": "20"
                                        }
                                    ]
                            },
                            {
                                "Numero_Projeto": "10",
                                "Nome_Projeto": "Informatização",
                                "Local_Projeto": "Mauá",
                                "Horas_trabalhadas": 
                                    [
                                        {
                                            "Cpf_Funcionario": "33344555587",
                                            "Horas": "10"
                                        },
                                        {
                                            "Cpf_Funcionario": "98798798733",
                                            "Horas": "35"
                                        },
                                        {
                                            "Cpf_Funcionario": "99988777767",
                                            "Horas": "10"
                                        }
                                    ]
                            },
                            {
                                "Numero_Projeto": "30",
                                "Nome_Projeto": "Novos Benefícios",
                                "Local_Projeto": "Mauá",
                                "Horas_trabalhadas": 
                                    [
                                        {
                                            "Cpf_Funcionario": "98765432168",
                                            "Horas": "5"
                                        },
                                        {
                                            "Cpf_Funcionario": "98798798733",
                                            "Horas": "5"
                                        },
                                        {
                                            "Cpf_Funcionario": "99988777767",
                                            "Horas": "30"
                                        }
                                    ]
                            }
                        ]
                    }'
            ),
            (5, 
                    '{
                      "Numero_Departamento": "5",
                      "Data_Inicio_Gerente": "1988-05-22",
                      "Nome_Departamento": "Pesquisa",
                      "Cpf_Gerente": "33344555587",
                      "Projeto": 
                        [
                            {
                                "Numero_Projeto": "2",
                                "Nome_Projeto": "Produto Y",
                                "Local_Projeto": "Itu",
                                "Horas_trabalhadas": 
                                    [
                                        {
                                            "Cpf_Funcionario": "12345678966",
                                            "Horas": "8"
                                        },
                                        {
                                            "Cpf_Funcionario": "33344555587",
                                            "Horas": "10"
                                        },
                                        {
                                            "Cpf_Funcionario": "45345345376",
                                            "Horas": "20"
                                        }
                                    ]
                            },
                            {
                                "Numero_Projeto": "3",
                                "Nome_Projeto": "Produto Z",
                                "Local_Projeto": "São Paulo",
                                "Horas_trabalhadas": 
                                    [
                                        {
                                            "Cpf_Funcionario": "33344555587",
                                            "Horas": "10"
                                        },
                                        {
                                            "Cpf_Funcionario": "66688444476",
                                            "Horas": "40"
                                        }
                                    ]
                            }
                        ]
                    }'
            );
solução!

Resolução:

SELECT 
    JSON_EXTRACT(`JSON`, "$.Nome_Departamento"),
    JSON_EXTRACT(`JSON`, "$.Projeto[0].Nome_Projeto"),
    t2.CPF_FUNCIONARIO, t2.Horas 
FROM tb_object_departamento_projeto_trabalha_em
CROSS JOIN 
JSON_TABLE
    ( 
        JSON_EXTRACT(`JSON`, "$.Projeto[0].Horas_trabalhadas"), "$[*]"
        COLUMNS
            (
                CPF_FUNCIONARIO VARCHAR(11) PATH "$.Cpf_Funcionario", 
                Horas integer PATH "$.Horas"
            )
    ) t2;