IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Supprimer une valeur précise d'un tableau qui appartient à un objet json d'un champ


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 537
    Par défaut Supprimer une valeur précise d'un tableau qui appartient à un objet json d'un champ
    Salut,

    Comme c'est indiqué dans le titre, je viens d'installer la version récente de mysql et j'ai un champ autorised de type JSON structuré comme ça :
    Code json : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    {
       "pub":{....}
      ,"pub_groupe":{"ids":["1","15","3"],"valeur":"1"}
      ,....
    }

    Ce que je voudrais c'est modifier le pub_groupe.ids en supprimant la valeur "15" (d'une façon dynamique), donc j'ai mis :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    UPDATE `salarie`
    set autorised=json_remove(autorised,'$.pub_groupe.ids',json_unquote(json_search(json_extract(autorised,'$.pub_groupe.ids'),"one","15")))
    where id=1 and json_search(json_extract(autorised,'$.pub_groupe.ids'),"one","15") is not null;

    Mais ça me supprime tout le tableau "pub_groupe", quelqu'un peut m'aider ?

    Merci.

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 537
    Par défaut
    Bon voilà je partage la solution, supposons que nous avons un objet structuré comme ceci
    Code json : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    {"pub_groupe":{
          "ids":["10","12","15"......],"valeur":"1"}
    }

    On peut donc écrire cette requête d'update pour supprimer un id précis en se basant sur son index dans le tableau pub_groupe.ids de l'utilisateur id=1 :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    update salarie
    set autorised=
    json_remove(
        autorised
        ,concat('$.pub_groupe.ids['
                ,regexp_replace(json_search(json_extract(autorised,'$.pub_groupe.ids'), 'one', '15'),  '[^0-9]','')
                ,']'
    	)
    ) 
    where id=1 and json_search(json_extract(autorised,"$.pub_groupe.ids"), "one", "15") is not null

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Supprimer une valeur d'un tableau associatif
    Par imen.m dans le forum Langage
    Réponses: 6
    Dernier message: 16/11/2015, 13h46
  2. Supprimer une valeur dans un tableau
    Par direct dans le forum C
    Réponses: 7
    Dernier message: 25/02/2009, 11h47
  3. Supprimer une valeur d'un tableau
    Par Tryp' dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 03/11/2008, 16h57
  4. Réponses: 1
    Dernier message: 13/02/2007, 10h54
  5. [HTML] Se placer à une ligne précise dans un tableau
    Par seb55555 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 28/10/2004, 16h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo