MySQL query podatkov v JSON zapisu
 
esedic 11. mar 2013 15:53:29 Pridružen od:
28. nov 2007
368 objav
184 13 4
#1

Kakšen je "pravilen" način za poizvedbo v tabeli, kjer so podatki zapisani v JSON formatu?



Recimo da imam v stolpcu z imenom custom_fields zapisano:


[{"id":"1","value":"18"},{"id":"2","value":"20"}]

Želim dobiti vse zapise, ki imajo v stolpcu custom_fields zapisan value 18.



Torej


SELECT * FROM `my_data_table` WHERE `custom_fields` = ???

Kako bi v PHP skonstuiral takšno poizvedbo?


všeč(0) ni všeč(0) spam(0)
 
Mešetar 11. mar 2013 16:04:08 Pridružen od:
24. nov 2010
1543 objav
1945 962 114
#2

kolko jaz vem, ne gre .... lahko pa naredis normalen like na vsebino inputa




SELECT * FROM my_data_table WHERE custom_fields like '%value:18%'



všeč(1) ni všeč(0) spam(0)
 
esedic 11. mar 2013 17:46:26 Pridružen od:
28. nov 2007
368 objav
184 13 4
#3

Ja, %LIKE% je varianta, sem mislil da se bo našla kakšna alternativa.


všeč(0) ni všeč(0) spam(0)
 
Lucifix 11. mar 2013 19:27:07 Pridružen od:
14. okt 2008
744 objav
438 12 0
#4

Zakaj si se sploh lotil zapisov JSON formata v mysqlu? Kot so predhodniki povedali je ena možnost, da uporabiš like, ampak na dolg rok, ko boš imel v mysqlu zapisano večjo količino podatkov, ti bo to zelo upočasnilo zadevo. Svetujem ti, da prestrukturiraš zapis v mysql tabelo z dvema ali več polji: id1, value1, id2, value2 in potem uporabiš mysql stavek:

SELECT * FROM 'mydatatable' WHERE 'value1' = '18' OR value2 = '18'


všeč(0) ni všeč(0) spam(0)
 
esedic 11. mar 2013 19:36:55 Pridružen od:
28. nov 2007
368 objav
184 13 4
#5

Gre za CMS modul, ne morem spreminjati tabele.

Drugače pa v tem polju nikoli ne bo veliko podatkov.


všeč(0) ni všeč(0) spam(0)
 
 

🔒 Za odgovor na to temo se moraš prijaviti.

Prijavi se