¿Cómo buscar registros que coincidan con los datos de un JSON en MariaDB?
Publicado por Hannss (1 intervención) el 04/08/2020 01:17:56
Hola, soy nuevo con el manejo de búsquedas json en mysql/mariadb y no logro obtener resultados de la consulta...
Tengo una tabla llamada "shipping_services" con la siguiente estructura ("sird" es la llave primaria):
sird int(11) NOT NULL,
tarifas json NOT NULL
Esta sería más o menos la estructura de un registro del json tarifas:
Lo que quiero hacer es encontrar todos los registros en donde dentro de "tarifas", por ejemplo: "to" sea 62 y al mismo tiempo "fr" sea 29.
Si se puede condicionar la consulta a ambos criterios a la vez ("to" y "fr"), sería genial. Si no se puede, con que solo se pueda encontrar "to" también me sirve.
Intenté con: (primero quería probar si podía conseguir resultados en los que coincidiera "to")
y con json_search, pero no logro que me devuelva algún resultado.
En el path probé poniendo $.to, $.to[*], $[*].to, $[*].to[*], pero no se si va por ahí el problema
Tengo una tabla llamada "shipping_services" con la siguiente estructura ("sird" es la llave primaria):
sird int(11) NOT NULL,
tarifas json NOT NULL
Esta sería más o menos la estructura de un registro del json tarifas:
1
{"1": {"cf": {"configs": ["3", "400", "3000", "0"], "wSentences": [["1", "1", "1", "1", "1000"], ["3", "2", "2", "1", "7000"]]}, "fr": ["29", "33"], "to": ["30", "62"], "tp": "2"}}
Lo que quiero hacer es encontrar todos los registros en donde dentro de "tarifas", por ejemplo: "to" sea 62 y al mismo tiempo "fr" sea 29.
Si se puede condicionar la consulta a ambos criterios a la vez ("to" y "fr"), sería genial. Si no se puede, con que solo se pueda encontrar "to" también me sirve.
Intenté con: (primero quería probar si podía conseguir resultados en los que coincidiera "to")
1
2
SELECT * FROM shipping_services WHERE JSON_CONTAINS('tarifas', '62', '$.to')
SELECT * FROM shipping_services WHERE JSON_EXTRACT('tarifas' , '$.to')=62
En el path probé poniendo $.to, $.to[*], $[*].to, $[*].to[*], pero no se si va por ahí el problema
Valora esta pregunta
0