Jump to content
Maykel-ctba

JSON_EXTRACT referenciando um ID para infos de outra tabela

Recommended Posts

Eu tenho uma tabela no BD chamada "menu", com uma coluna chamada ESTRUTURA. Ela era do tipo text, e nela contém um JSON com uma estrutura de menus referenciadas por IDs de outra tabela "categoria".

 

Ex: [{"id": 1}, {"id": 3}, {"id": 4}, {"id": 131}, {"id": 125}, {"id": 5}]

 

Estes IDs acima são categorias cadastradas na tabela "categoria". Porém, para retornar no PHP, tem sido bem custoso para a performance, fazer um loop, dentro desse loop fazer um SELECT * FROM categoria WHERE id = 1, = 2, e por aí vai...

 

Li que existe um novo tipo de coluna chamada JSON, que poderia referenciar informações na hora da consulta. Corrijam-me se estiver errado.

 

Mas é possível, por exemplo, fazer uma consulta desta tabela "menu", e nela, retornar as infos de cada ID deste JSON, em uma consulta apenas?

 

Exemplo do que gostaria (Não sei a sintaxe, não sei onde referenciar a tabela "categoria")

 

SELECT *, JSON_EXTRACT(menEstrutura, '$.*') as Data FROM sistema_menu WHERE menId = 1


Resultado:

Citar

ID         |       Title         |       Structure         |       Data
1         |       Menu Header         |       [{"id": 1}, {"id": 3}]         |        [{"1":{"id":1,"title":"Cat 01","active":"true"},"2":{"id":2,"title":"Cat 02","active":"true"}}]

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Guilherme Scarpatto
      <p>Escolha a categoria: <select name="categoria"> <option></option> <option value="v1">Conhecimentos gerais</option> <option value="v2">Português</option> <option value="v3">Matemática</option> <option value="v4">História</option> <option value="v5">Geografia</option> <option value="v6">Sociologia</option> <option value="v7">Tecnologia</option> <option value="v8">Biologia</option> <option value="v9">Programação</option> <option value="v10">Banco de dados</option> </select>  
    • By jeandelima
      Olá pessoal, estava querendo saber se podem me ajudar com uma pequena dúvida que surgiu há poucos dias.
       
      Estou com problemas pra importar um banco de dados pra o usar no meu servidor local (xampp). O banco de dados foi exportado do site de um cliente, e lá no server eles usam o mysql. Instalei a versão mais recente do xampp no meu pc, e quando fui importar o banco pra poder começar os trabalhos, deu vários erros de sintaxe. Daí fiz umas pesquisas e encontrei alguns materiais que mencionavam que o xampp agora usa o mariadb, e ele não é 100% compatível com mysql.
       
      Estou há um bom tempo sem mexer com programação e também sem me atualizar das coisas, e gostaria de saber se alguém sabe a partir de qual versão do xampp eles passaram a usar o mariadb. Eu já pesquisei mas não obtiver sucesso. E instalar e desinstalar inúmeras versões é algo trabalhoso e cansativo demais. Alguém poderia me ajudar?
       
      Desde já, muito obrigado.
       
      PS.: Por ser novo aqui no forum, e por não frequentar forum há muito tempo, acho que acabei postando no lugar errado. Peço perdão aos adms.
    • By Good
      Boa tarde,
       
      temos um servidor na amazon, e o site está direcionado para o servidor. Estamos tendo um problema, de vez em quando o servidor cai. 
       
      Gostaríamos de saber se tem algum programa no ubuntu, que monitore qual arquivo que teve alto consumo. Para sabermos se o código está escrito de maneira complexa, causando a queda do servidor.
       
      Eu lembro que uma vez a hostgator mandou um relatório, avisando que tal arquivo estava consumindo muito do servidor. É possível fazer esse monitoramento? Não temos como ficar 24h olhando por exemplo o htop..
       
      Aguardo uma resposta,
      obrigado!
    • By thejhunior
      Faz um tempo que não mexo com ASP classico, precisa de uma ajuda
       
      Em uma tabela mysql, tenho a tabela de produtos, e na coluna categoria que armazena o ID de uma categoria, gostaria de ao invés de armazenar apenas um ID, gostaria de armazenar varios IDs. Como se o produtos fizesse parte de varias categorias
       
      Minha duvida e como no select poderia buscar um produtos de categoria x em uma tabela com dados separados em "," "01.02,03"
       
       
    • By asacap1000
      Galera estou com uma dúvida, tenho a parte de envio de dados para em Post, com encode json e curl. Já pesquisei em todos os lugares e não encontrei nada pra clarear as idéias.
       
      a parte final é essa do envio (cliente)
      header("Content-Type: ".$mediaType); $headers = array(); $headers[] = "Accept: ".$mediaType; $headers[] = "Accept-Charset: ".$charSet; $headers[] = "Accept-Encoding: ".$mediaType; $headers[] = "Content-Type: ".$mediaType.";charset=".$charSet; $headers[] = "Authorization: Basic ".$AuthorizationHeaderBase64; $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS,"contatos=$contatos"); #campos que serão enviados curl_setopt($ch, CURLOPT_USERPWD, $AuthorizationHeaderBase64); curl_setopt($ch, CURLOPT_HEADER, $headers); curl_setopt($ch, CURLINFO_HTTP_CODE, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);#ativa se for ter retorno do chamada $result = curl_exec($ch); $result2 = json_decode($result,true); curl_close($ch); if($result2 === false) { $err = 'Curl error: ' . curl_error($ch); $result2 = $err; echo "This is text".$err; } var_dump ($result2);  
      Preciso de ajuda para entender como deve ser feito a página que será chamada, no caso lado servidor.
       
      Como pode ver tenho um header configurado e será enviado com chave de autorização agora como isso é feito do lado servidor??
       
      Se alguém puder me ajudar, preciso entregar este webservice sexta feira 18/10. Todos os dados recebidos serão salvos no BD Oracle.
       
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.