WRInaute accro
Bonjour,
une demande pour les pros du MySQL ^^
J'ai dans la table postmeta de Wordpress un champs dont la valeur est sérialisée . Par exemple ça donne ça :
a:3:{i:0;s:4:"1436";i:1;s:4:"2827";i:2;s:4:"0205";}
Je voudrais faire une recherche et sortir tous les champs qui ont la valeur 1436
En php, super simple, in_array
en Mysql l'opérateur IN devrait marcher aussi, sauf que non, pas de bol, il ne comprend pas que c'est une array
J'ai bien sûr la solution de bourrin, qui est de sélectionner tous les champs, et de passer rang après rang avec un foreach, et un maybe_unserialize (une fonction de WP). Dans le cas présent, ça ne serait pas dramatique, car je vais avoir une trentaine d'enregistrements au maximum.
Néanmoins, je peux avoir besoin d'utiliser le même mécanisme avec beaucoup plus d'enregistrements, et là j'ai un peu peur pour la performance.
J'ai trouvé ça http://lists.mysql.com/mysql/190196 qui décrit parfaitement mon problème, et qui renvoie vers ça http://dev.mysql.com/doc/refman/5.5/en/any-in-some-subqueries.html en suggérant de créer une table temporaire avec le contenu de l'array, et d'utiliser ensuite IN
c'est juste sur l'opération "créer une table temporaire" que je coince complètement... :mrgreen:
(on me l'a toujours dit, je ne sais pas coder)
une demande pour les pros du MySQL ^^
J'ai dans la table postmeta de Wordpress un champs dont la valeur est sérialisée . Par exemple ça donne ça :
a:3:{i:0;s:4:"1436";i:1;s:4:"2827";i:2;s:4:"0205";}
Je voudrais faire une recherche et sortir tous les champs qui ont la valeur 1436
En php, super simple, in_array
en Mysql l'opérateur IN devrait marcher aussi, sauf que non, pas de bol, il ne comprend pas que c'est une array
J'ai bien sûr la solution de bourrin, qui est de sélectionner tous les champs, et de passer rang après rang avec un foreach, et un maybe_unserialize (une fonction de WP). Dans le cas présent, ça ne serait pas dramatique, car je vais avoir une trentaine d'enregistrements au maximum.
Néanmoins, je peux avoir besoin d'utiliser le même mécanisme avec beaucoup plus d'enregistrements, et là j'ai un peu peur pour la performance.
J'ai trouvé ça http://lists.mysql.com/mysql/190196 qui décrit parfaitement mon problème, et qui renvoie vers ça http://dev.mysql.com/doc/refman/5.5/en/any-in-some-subqueries.html en suggérant de créer une table temporaire avec le contenu de l'array, et d'utiliser ensuite IN
c'est juste sur l'opération "créer une table temporaire" que je coince complètement... :mrgreen:
(on me l'a toujours dit, je ne sais pas coder)