Olá pessoal,
Estou com uma pequena dúvida em relação a buscar dados em json no MySQL.
No meu banco eu tenho uma table com o seguinte campo em json.
table - contacts
column - groups_id
Na coluna groups_id eu armazeno ids de grupos em json por exemplo:
["252","222","666"]
Quando eu realizo a seguinte query
SELECT * FROM user_contacts WHERE JSON_CONTAINS(group_id, '["252"]')
Beleza... Ele me resulta em todos os contatos que possuem o registro 252.
O que acontece é que essa table é 1 > N, ou seja, um contato pode fazer parte de vários grupos, sendo assim:
quando eu consulto
SELECT * FROM user_contacts WHERE JSON_CONTAINS(group_id, '["252","222"]')
Ele não me resulta nos contatos que estão com grupo 252 ou 222.
Ele me resulta nos contatos que estão com o grupo 252 e 222, ou seja, ele me retorna somente os contatos que o group id tenha ["252","222"]
Eu vi que nessa situação eu poderia criar um INDEX na minha tabela usando:
ALTER TABLE user_contacts ADD INDEX groups ( (CAST(group_id->'$.groups' AS UNSIGNED ARRAY)) );
Mas o CAST() na versão que Mysqli que eu possuo no servidor 4.6.X me retorna Syntax error.
Alguem teria uma sugestão ou luz de qual caminho posso seguir nessa situação sem que seja atualizando a versão do bd?