Joomla.it Forum

Non solo Joomla... => Sviluppo => : mau_develop 25 Apr 2013, 19:29:44

: Accedere a registro nel db
: mau_develop 25 Apr 2013, 19:29:44
Ho bisogno di fare una query select su un campo contenente un valore serializzato (JRegistry) per estrarre (filtrare) dove un elemento di quel registro = X

come posso fare senza uccidere il database?
: Re:Accedere a registro nel db
: simone83 26 Apr 2013, 02:29:50
serializzi il dato e lo riccerchi con un like, ma da una rapida ricerca non sembra ci siano dei metodi standard
: Re:Accedere a registro nel db
: mau_develop 26 Apr 2013, 07:43:38
mmhh vero,... nel db è già ovviamente una stringa serializzata potrei appunto estrarla solo che invece che fare un like potrei fare una regex e deserializzarlo solo se il tal valore è presente.

Il problema è che sono circa 70.000 record e non c'è altra soluzione che usare la serializzazione per salvare quei dati, non possono occupare campi.
La tabella non ha un indice unico, o meglio ce l'ha ma non è gestito dal db ma dagli script... un po come se fosse:

nome->simone
azioni-> serializzazione (array(2013-4-26->si, giallo->ok, pioggia->no), array(2013-4-30->si, giallo->no, pioggia->si )

ora se devo cercare tutti i giorni in cui simone ha preso la pioggia diventa un guaio capisci?... più che altro non per riuscirci ma per farlo con operazioni meno onerose possibile per il db
: Re:Accedere a registro nel db
: simone83 26 Apr 2013, 09:56:38
non penso ci sia una soluzione performante per cio che vuoi fare, select e where su testo libero, l'uniuca cosa che mi viene in mente e demandare tali controlli al php utilizzando la cache dove ritrsformi questi valori serializzati in campi, ma non penso sia ottimale. Questa è una questione per super esperti di database