[MySQL] rechercher une valeur dans un champ sérialisé

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par Marie-Aude, 10 Août 2011.

  1. Marie-Aude
    Marie-Aude WRInaute accro
    Inscrit:
    5 Juin 2006
    Messages:
    16 952
    J'aime reçus:
    275
    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)
     
  2. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    12 018
    J'aime reçus:
    133
  3. Marie-Aude
    Marie-Aude WRInaute accro
    Inscrit:
    5 Juin 2006
    Messages:
    16 952
    J'aime reçus:
    275
    Règle de base : ne pas rajouter des tables pour des prunes, la table meta est faite pour ça ^^
    Règle de base numéro deux : quand WP sérialise des trucs dans le core, ne pas changer le core, et ne pas doublonner les données

    Donc ... je vais regarder les pistes que tu m'as données ^^
     
  4. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    12 018
    J'aime reçus:
    133
    Ma réponse était plutôt à prendre de manière générale, sans réflexion propre à tel ou tel CMS.
     
  5. Marie-Aude
    Marie-Aude WRInaute accro
    Inscrit:
    5 Juin 2006
    Messages:
    16 952
    J'aime reçus:
    275
    Sur le fonds je suis parfaitement d'accord avec toi. Ce qui m'a permis de comprendre d'ailleurs pourquoi certaines fonctions n'étaient pas intégrées dans WordPress maintenant :D
    Et aussi que je cherchais midi à 14h (au moins..) in simple like suffisait en fait.

    Rah la la le nez dans le guidon
     
Chargement...
Similar Threads - [MySQL] rechercher valeur Forum Date
[résolu][mysql] faire un "NOT LIKE" sur une chaîne contenant des / Développement d'un site Web ou d'une appli mobile 25 Octobre 2014
[MySQL] Liste (select) avec des lignes au hasard Développement d'un site Web ou d'une appli mobile 23 Octobre 2014
[MySQL] Requête SELECT et INSERT entre 3 tables liées+Aide Développement d'un site Web ou d'une appli mobile 30 Avril 2014
[MySQL] Nombre d'enregistrements sur des horaires précis Développement d'un site Web ou d'une appli mobile 19 Juillet 2013
[MYSQL] Comment remplacer caractères dans tous les champs de toutes les tables d'une base? Développement d'un site Web ou d'une appli mobile 11 Juillet 2013
[MYSQL] Une sorte de "OR JOIN" ? Développement d'un site Web ou d'une appli mobile 5 Juillet 2013
[MySQL] sélectionner la dernière note pour chaque élève en une seule requète ? Développement d'un site Web ou d'une appli mobile 12 Avril 2012
[Mysql] Requête PDO avec variable php Développement d'un site Web ou d'une appli mobile 16 Février 2012
[Mysql] Requête PDO aléatoire Développement d'un site Web ou d'une appli mobile 7 Février 2012
[MYSQL] Tri par date Développement d'un site Web ou d'une appli mobile 7 Septembre 2011
[MySQL] Requête SELECT entre 3 tables liées Développement d'un site Web ou d'une appli mobile 10 Août 2011
[MySQL] addslashes et stripslashes Développement d'un site Web ou d'une appli mobile 9 Août 2011
[résolu] [mysql] Conditions WHERE avec AND et OR Développement d'un site Web ou d'une appli mobile 13 Mai 2011
[mysql] trier les résultats d'une requête selon une table non liée à la requête Développement d'un site Web ou d'une appli mobile 15 Avril 2011
[résolu] [mysql] passer un champ à une valeur donnée pour tous les enregistrements Développement d'un site Web ou d'une appli mobile 25 Mars 2011
[MySQL] INSERT / UPDATE conditionnel Développement d'un site Web ou d'une appli mobile 1 Février 2011
[mysql] LIMIT utile sur un champ indexé ? Développement d'un site Web ou d'une appli mobile 8 Décembre 2010
[mySQL] Découper une table et gagner en performance ? Développement d'un site Web ou d'une appli mobile 9 Janvier 2010
[MySQL] Récupérer la première ligne d'un GROUP BY Développement d'un site Web ou d'une appli mobile 14 Décembre 2009
[MySQL] : select de 2 tables et mysql_fetch_assoc Développement d'un site Web ou d'une appli mobile 22 Septembre 2009