1
resposta

[Dúvida] Gabarito não rodou

Não entendi a resposta. A proposta da questão foi expandir a consulta anterior. Na realidade, foi feita outra consulta diferente. Não localizei a tabela tb_object_departamento_projeto_trabalha_em e o campo JSON não se chama JSONVALUE.

SELECT JSON_EXTRACT(JSONVALUE, "$.Nome_Departamento"), JSON_EXTRACT(JSONVALUE, "$.Projeto[0].Nome_Projeto")
,  t2.CPF_FUNCIONARIO, t2.Horas FROM tb_object_departamento_projeto_trabalha_em
CROSS JOIN 
JSON_TABLE (JSON_EXTRACT(JSONVALUE, "$.Projeto[0].Horas_Trabalhadas"), "$[*]"
COLUMNS (CPF_FUNCIONARIO VARCHAR(10) PATH "$.Cpf_Funcionario", Horas integer PATH "$.Horas")) t2
UNION
SELECT JSON_EXTRACT(JSONVALUE, "$.Nome_Departamento"), JSON_EXTRACT(JSONVALUE, "$.Projeto[1].Nome_Projeto")
, t2.CPF_FUNCIONARIO, t2.Horas FROM tb_object_departamento_projeto_trabalha_em
CROSS JOIN 
JSON_TABLE (JSON_EXTRACT(JSONVALUE, "$.Projeto[1].Horas_Trabalhadas"), "$[*]"
COLUMNS (CPF_FUNCIONARIO VARCHAR(10) PATH "$.Cpf_Funcionario", Horas integer PATH "$.Horas")) t2;
1 resposta

Olá, Alexandre!

Este curso é bem recheado de exemplos e provocações para extrapolarmos durante nossa jornada de aprendizagem as práticas de criação e manipulação de Banco de Dados e é normal que este tipo de desafio que vc teve apareça mesmo e isto enriquece e mto a aprendizagem no tema!

Então, tenho algumas dicas para vc quem sabe encontrar um caminho para resolução deste ponto trazido:

1- Se certificar que todas as tabelas citadas como 'tb_object_departamento_projeto_trabalha_em' foram criadas anteriormente 2- O campo 'JSONVALUE' é ilustrativo só para sabermos que um valor real extraído do BD deve aparecer ali. 3- Se a tabela 'tb_object_departamento_projeto_trabalha_em' e o campo 'JSONVALUE' não existem em seu banco de dados, você pode tentar substituí-los por nomes de tabelas e campos que existem em seu banco de dados.

Obs: A ideia principal aqui desta prática é entender como a função JSON_EXTRACT funciona e como ela pode ser usada para extrair informações de um campo JSON.

Por exemplo, se você tem uma tabela chamada 'departamentos' e um campo JSON chamado 'informacoes', você pode substituir 'tb_object_departamento_projeto_trabalha_em' por 'departamentos' e 'JSONVALUE' por 'informacoes' no código do gabarito. O código modificado seria algo assim:

SELECT JSON_EXTRACT(informacoes, "$.Nome_Departamento"), JSON_EXTRACT(informacoes, "$.Projeto[0].Nome_Projeto")
,  t2.CPF_FUNCIONARIO, t2.Horas FROM departamentos
CROSS JOIN 
JSON_TABLE (JSON_EXTRACT(informacoes, "$.Projeto[0].Horas_Trabalhadas"), "$[*]"
COLUMNS (CPF_FUNCIONARIO VARCHAR(10) PATH "$.Cpf_Funcionario", Horas integer PATH "$.Horas")) t2
UNION
SELECT JSON_EXTRACT(informacoes, "$.Nome_Departamento"), JSON_EXTRACT(informacoes, "$.Projeto[1].Nome_Projeto")
, t2.CPF_FUNCIONARIO, t2.Horas FROM departamentos
CROSS JOIN 
JSON_TABLE (JSON_EXTRACT(informacoes, "$.Projeto[1].Horas_Trabalhadas"), "$[*]"
COLUMNS (CPF_FUNCIONARIO VARCHAR(10) PATH "$.Cpf_Funcionario", Horas integer PATH "$.Horas")) t2;

Bons estudos!