Gerando JSON
Gerando JSON
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"
}
]
}
]
}'
);
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;