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 PostgreSQL Discussion :

[PostgreSQL 12.12] Récupérer des éléments dans un json


Sujet :

Requêtes PostgreSQL

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 162
    Par défaut [PostgreSQL 12.12] Récupérer des éléments dans un json
    Bonjour,

    je souhaite via une requête PostgreSQL, réccupérer le contenu d'un json.

    On suppose que j'ai deux tables client et article.
    Je vous met que la table article pour le test.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     create table article (
     	id_article serial primary key,
     	designation varchar not null,
     	prix int not null,
     	detail json not null,
     	id_client int not null,
     	foreign key (id_client)
     		references client (id_client)
     );

    J'ai ajouté un élément dans la table article et ce qui nous intéresse est le champs detail

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    insert into article (
    designation, 
    prix, 
    detail, 
    id_client)
    values (
    'Table à manger', 
    450, 
    '{"adresseArtisan":"25 rue Noblet, 95100 Argenteuil","reference":562485662, "precisions":{"element":[{"key":"matiere","value":"BOIS"},{"key":"poids","value":"12kg"}]}}', 
    1);
    Detail:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '{"adresseArtisan":"25 rue Noblet, 95100 Argenteuil","reference":562485662, "precisions":{"element":[{"key":"matiere","value":"BOIS"},{"key":"poids","value":"12kg"}]}}'
    La requête suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select detail->>'precisions' from article where id_article=1;
    me renvoie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                                      precisions                                   
    -------------------------------------------------------------------------------
     {"element":[{"key":"matiere","value":"BOIS"},{"key":"poids","value":"12kg"}]}
    Ce qui m'intéresse, c'est de réccupérer les valeurs BOIS et 12kg via un select.

    J'aimerais faire quelque chose dans ce genre:

    select detail->>'precisions'->>'element'->>BOIS mais je ne sais pas comment m'y prendre.
    Après je me doute que pour réccupérer le contenu de element, il faut utiliser un array_to_string. Mais, déjà il faut que j'accède à element.

    Auriez vous une piste s'il vous plaît?

    Je vous remercie par avance,

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 162
    Par défaut
    Salut,

    C'est bon pour moi finalement.

    Il faut utiliser la flèche simple plus que la double flèche qui renvoie en fait un string.

    0 est mis pour réccupérer le premier élément du tableau.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select detail->'precisions'->'element'->0->'value' from article where id_article=1;
    Du coup, on aura:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     ?column? 
    ----------
     "BOIS"
    (1 row)
    @+

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

Discussions similaires

  1. Récupérer des éléments dans une page internet
    Par 306xshdi dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 11/11/2019, 19h47
  2. Récupérer des élèments dans une ligne
    Par Olivier Regnier dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 27/04/2017, 16h47
  3. Réponses: 2
    Dernier message: 15/07/2008, 09h26
  4. Réponses: 1
    Dernier message: 22/01/2008, 16h58
  5. Réponses: 6
    Dernier message: 31/03/2007, 01h39

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